what you want is a so called Reverse Proxy. This is a Proxy which works by getting all traffic on the one IP you have, parsing the Host Header and doing the request for the external clients.
Link to HowTo: http://www.apachetutor.org/admin/reverseproxies
This way you only have to add normal VirtualHosts to your Reverse Proxys configuration and configure the reverse proxy part inside the Vhosts. Also gives you the ability to use wildcards easily.
But beware, this only works for HTTP. Theres an extension for HTTPS which can be used to achieve the same, but AFAIK browser support is bad.
You also want simple Host-only networking. That way you can forward the SSH Ports to the internal IP Adresses using iptables and do HTTP with the reverse proxy.
Also, I think what you want to achieve is stupid. Dont hand out root to your users and use some form of mass-hosting control panel. Its the way of least work :)
Hope it helps :)