Probably the easiest way to do it is to run separate apache servers on the same machine. Use the same binaries, but start each apache with a per-user config file.
Just limit the number of children that it starts so that you don't run out of memory
Alternatively, look at PerlOptions +Parent which was added for this purpose. From the docs:
+Parent: Create a new parent Perl interpreter for the given VirtualHost and give it its own interpreter pool (implies the Clone option).
A common problem with mod_perl 1.0 was the shared namespace between all code within the process. Consider two developers using the same server and each wants to run a different version of a module with the same name. This example will create two parent Perl interpreters, one for each <VirtualHost>, each with its own namespace and pointing to a different paths in @INC...
Clint