Prioritize application installation/removal and hold reboots until all deployments are complete.
I worked with Radia for many years. Two things from Radia we miss are the ability to set priority and holding reboots until the end of all deployments. For priority, we could set a value of 1 to 99 on an application. Anytime there were multiple deployments to a device they would be performed in low to high number priority order for install and reverse for uninstall. Uninstalls would occur first. We could also set reboot=reallysuppress in any msiexec command line and set a flag on the application to reboot on install, uninstall, update, etc. Radia would then wait until all deployments were complete and trigger the reboot at the end of the processing. That way multiple reboots were avoided as much as possible.