Some blog posts I remember from when I was exploring this idea a few years ago:
http://0pointer.de/blog/projects/socket-activated-containers...
https://www.ctl.io/developers/blog/post/running-drupal-in-li...
Our hypervisor does the logic though, we don't rely on the OS of the staging server itself for anything (think PXE)
So you guys boot the image in the background, then capture a memory dump of it so you can quickly launch VMs from that snapshot? Or you boot the VMs the traditional way the first time, and then just suspend them when not in use?
Also, we monitor which files are read by any step in the process, and let you skip setup chunks that don't need to run (i.e., installing libraries) without needing to micromanage what files you copy into the staging server.