As for me this can work in given environment (where is it externally ensured that old server is down until new one is up), but can't be introduced as generic zookeeper patch. Simply because without such an external ensurance, two servers with different IPs and same name can be recognized by different parts of the ensemble. BTW: Are there possibility of such a problem now with dynamic DNS and servers started at different DNS states? As for me, better option would be to assign IPs to your VMs dynamically. E.g. when you think given server should become serverA, you should simply add IPa as an alias IP for it. ARP will ensure you won't have two As and you don't need to touch the code.
Best regards, Vitalii Tymchyshyn