While using T-SQL to execute the SSIS package does seem to work however it seems DTExec is still more suitable and stable. I found using the new version of DTExec does have an option (poorly documented) to pass a parameter to allow synchronous processing. Using this method also allows the exit code to be returned which is the problem I was experiencing with the T-SQL option.
Example of script:
DTExec.exe /ISSERVER "\SSISDB\project\package_name.dtsx" /SERVER "server_name" /Par "$ServerOption::SYNCHRONIZED(Boolean)";True
The older version of dtexec will not support the new options, ensure that you're executing the new version if both are available on the server. To check which version is in the search path (default) use "WHERE DTEXEC". Type "DTEXEC /?" and check if the new options appear in the help text, if not, prefix the command execution with the correct path location.
New version location
C:\Program Files\Microsoft SQL Server\110\DTS\Binn\DTExec.exe
Older version location
C:\Program Files (x86)\Microsoft SQL Server\110\DTS\Binn\DTExec.exe