Reading your problem in the first 2 paragraphs, the first thing that came to mind was the base class solution you described in the third.. I would also recommend asking these folks on the cdbi mailing list.
Comment on Re: Class::DBI::Loader and transactions