In general it is best to sub-class an existing module. Although it may not be easy or straightforward it is generally possible.
For example the
Mail::Box module gathers together several existing mail modules under a single OO interface. This entailed some of the problems that you are facing.
The author, Mark Overmeer, gave an excellent talk about it at YAPC::Eu 2001. The slides are
here.
In particular he demonstrated a very clever idea for using AUTOLOAD to re-bless an object into a class that supported a called method. (This isn't directly applicable to your case but it is interesting nevertheless)
John.
--