Hi P;
FWIW: I would recommend going with option #1 (re-inheriting from a common CB ancestor)! Its not hard (although a bit laborious) to create the CB ancestor and then change the various dialog's CB source code to point to the new CB ancestor. I think Guillaume's approach has merit!
Regards ... Chris