I wonder if a good part of your problem is that you used subclassing at all. Delegation is cleaner and won't invoke these problems. You can use Class::Delegation to make much of the work automatic if you wish.
Comment on Re: A Growing Dislike for SQL-OOP Mappers