that's really a very strange behaviour.
Try to make it simple, keep only 1 VM per host. and try to fail one of the host, ideally it should only start VM which was originally running on failed host to that surviving host. But any existing VM in there should continue to run as it is.
just an additional thought, what about, VM Monitoring, is it enabled, keep that disabled while you try to do above test.
and have you configured VMCP in your vSphere HA, let's say your storage communication is facing some trouble, that's making VMs to restart.
Narendra Padmani
VCIX6-DCV | VCIX7-CMA | VCI | TOGAF 9 Certified