I ran into an issue today where I was unable to VMotion a VM due to host issues. While troubleshooting, I remembered how Microsoft first dealt with its inability to support VMotion - Quick VMotion.
The idea is that instead of migrating the VM while online, pause the VM, then migrate it, then restart the VM on the target. Though this causes some outage, it allows movement of VMs will less impact than actually powering off the VM (or allowing HA to recover a failed host)
Quick VMotion powershell code:
$vm = get-vm vmName
$Myhost = get-vmhost hostName
suspend-vm -VM $vm -Confirm:$False
move-vm -VM $vm -destination $Myhost -Confirm:$False
start-vm -VM $vm -Confirm:$False