That's true. Can you think of any way to hook VESSEL2 functions for both pure VESSEL2 and pure VESSEL3, but also hook the exclusive VESSEL3 functions for pure VESSEL3?
Yes. But to make it robust, you'd need to parse the import tables of the class-holding DLL in order to get the signatures, so you can distinguish VESSEL2/3 virtual functions from custom virtual functions.