We use virtual machines a great deal at my company, Hyper-V mainly but we have also dabbled with ESXi plus vCenter. Besides the traditional advantage of being able to consolidate many physical machines onto one server, we find the ease of management and provisioning extremely compelling features. The high availability and DR stuff are far less important.
We often have to install our applications on a machine we had only some influence in picking, so the hardware can vary a good bit. This time the vendor is HP, the next time it may be Dell. Blade servers or not, etc. The application is complex to install, involving several (up to 30) machines sometimes. It is so nice being able to install the base hypervisor, copy a few files, and be up and running. It saves us an enormous amount of time.
Running on VMs also has its disvantages too. It is one more layer of stuff to work with. Admins may not be familiar with them. VMware's licensing model seems to punish companies with lots of servers, but only one or two VMs per server (very expensive just for management tool). Often the hypervisor puts limitations on the VMs that really matter to our application. Hyper-V's limit of 4 CPU cores leaps to mind as really annoying to us since our application will use any CPU power you give it. That ease of provisioning almost always wins out though, since we are a development shop and are constantly building and rebuilding servers for ourselves and customers.
So my general question is: if you have at least some power over picking your hardware and are working with Windows-based OSes, what should you do to be able to rubber-stamp out similar machines without resorting to virtualization with the least pain possible? Additional points for solutions that allow migrating to a different hardware configuration with minimal pain. Or is this just asking too much and should we keep going with VMs?