Jason, thanks for putting this together. I think this will prove useful to folks trying to solve the problem of running an SSIS package from a stored procedure.
One comment. You do not issue an END CONVERSATION in your the stored procedures which send and recieve messages. If you query SYS.Conversation_Endpoints in your database, I expect that you will see a number of conversations that are in your estimation over, but broker services still reports them as open.
To clean this up, you can run the following:
SELECT 'END CONVERSATION ''' + CAST(conversation_handle as char(36))+ ''' WITH CLEANUP'
FROM sys.conversation_endpoints
Then execute the output from the SELECT.