I'm not sure if you have already any solution for this, but AFAIK you need run irexec as separated process/daemon to execute commands.
When you restart lirc daemon you need also restart irexec. If remote controller is disconnedted for a while then once again - you need to restart irexec. It would be much easier when irexec would be integrated with lircd.
This is actually few lines of code. Detect if signal should be sent to irexec and in this case don't send it. Simply execute this command. Or use different name in lircrc, for example "prog = execute" or "execute = true".