Another option that we used in our PIM for a client is for relational items we want versioning on, we just used child elements, OR you can utilize the related Documents linking system.
For our application, we have products (family, variant, then sku) with children (Features, Measurements, accessories). Then we also have Assets (Documents, VIdeos, and Images) in a seperate folder that we link the products to.
This can help with a 1 to many with versioning. Anything you want versioned, should remain a Page Type, relationship data though can be done through either Kentico's existing systems (related documents, you could make a selector that allows you to select certain related items of a certain page type and modify the page to have those relationships).
I could be wrong, but i do think Custom Modules CAN have versioning though if you want to take that route, there is a "SupportsVersioning" Parameters in custom class info method.