I've had similar issues with any webapp system. Rather than serializing the connection, which just freezes the 'name' of the connection and doesn't really keep it open, the right way to handle this is to use a daemon which runs continuously on the server and brokers the requests to the database, and you're right, uses a FIFO (Unix socket) to talk with your Mason app instances. The daemon can be written in Perl, there are many examples. This way, you can multiplex requests and cache database connections.
That said, you might be better off using Apache 2.x, mod_perl, and Apache::DBI which caches connections for you.
HTH,
SSF