Hmm - part of your problem is 9.6 here I think.
2016 (and onward), you can just plug restarts into bundles (which also allow you to install multiple pieces of software in a specific order).
... lemme double-check a 9.6 Core ... I *think* you can do bundles with reboots in 9.6 too potentially ...
Hmm - no, looks like we added the reboot action for bundles in 2016. So a software package bundle won't be much help to you in 9.6 since you can't survive a proper reboot in between.
You could pull everything into a single package (risky) ... essentially you install your 2 things, chuck the 3rd package to be run into the RUN-key, and throw your reboot. The 3rd package then calls at the end the 4th package (say - via batch) ... a bit risky, but it's an option.
Vulscan would be the "cleanest" option potentially, as you can define a single script that essentially leaves a flag behind, so as to know whether to start installing package 1 & 2 and then reboot, or whether to install package 3 & 4. Well done you on noticing you can abuse custom defs for all manner of things including software distribution (a favourite of mine) .
Thanks for the reply.
Right now it looks like my best solution is to take a Vulscan scheduled restart, which (I just learned) creates a Distribution Package as well as a Scheduled Task to kick off reboot prompts. I stuck this in the middle of the tasks. So far it seems "good enough", I say that because it doesn't seem to force a restart after the 2 hour interval because it still thinks LANDesk is doing something but at least it's huge prompt the user can't ignore with a custom message to restart.