I am afraid that it will not be possible to use base classes from a shared assembly - it is required for OpenAccess that all persistent classes (and their base classes, if any) are placed in one assembly.
As an alternative, I would suggest you to try using interfaces. You could make your persistent classes implement the interfaces without the risk of losing the changed by using partial classes. For each persistent type that should implement an interface, add in another file (not auto-generated) code similar to the following:
MyPersistentClass : MyInterface
Just make sure the namespaces and class names match the names of your persistent classes.