Have you looked at SWIG or XS?
I use SWIG regularly, and believe it's the best option currently available for C/C++ bindings. It's also nice that you get Python, Ruby, Java, etc. bindings along with the Perl ones. I have written XS for a couple of projects, but prefer SWIG or Inline::C.
BioPerl is a project that started over a decade ago
Age and organic growth have nothing to do with its problems, except to the extent that Java's popularity when BioPerl started led its original developers to overengineer the heck out of it. Like I said above, IMHO the best "refactoring" would be to start over.