That's an interesting process... you could improve it with some ansible - if that's your thing... or use snapshots on the VM(s) and roll back?
That's kinda what I'm doing with this (physical obviously) Pi... take a full backup now and again... do upgrades... rollback when completely borked.