It seems that I have found a solution. After digging in sqlalchemy code, it seems that the _configure_property mapper function would do the trick.
so ...
newprop = RelationshipProperty(newtargetmodel, **rel_kwargs)
newparentmodel.__mapper__._configure_property(oldprop.key, newprop)
so what I did above was to construct a new RelationshipProperty (copying all the key word arguments from the old property) and then configure it onto the new model (which inherits from the old one).
Before this step I also disposed of the old model mapper using mapper.dispose() and remapped using mapper() but without specifying the relationships in the mapper 'properties', this gave me the same classes with only the columns and without the relationship properties, which I then attached later using the _configure_property manually as above.
Cheers,
Ahmed