Yeah, that sounds like a tough issue with drawbacks no matter how it’s handled.
If this doesn’t work let me know and I’ll dig up my notes, I’ve dealt with it before. For the reboot policy, you might consider something like
pending restart AND not exists action whose (last active time of it > boot time of operating system
This should go relevant once every reboot while it’s pending a restart, and should have the post-action reboot set on it.