Thanks for the response Roman, however, I am not sure you understood the question properly as it isn't about our own Custom Classes and code as such.
Let me try another way of explaining it:
Our custom module is created as an installable NuGet package. The issue we are facing is that when installing the module on a clean / new instance of Kentico the CustomerType field we added to the Customers table is not created.
As a fix we need to import a modified version of the Customers object as a seperate manual step in the installation.
This is fine for now, but what happens if another Modules installation also requires a new version of the Customer object (especially if developed by another company)?
I did read the documentation you linked to, but I don't see how that is applicable in this scenario. Unless you are suggesting we create a totally new Class to hold the CustomerType and have that as a 1 to 1 relationship with the Customer class.
The latest documentation (in particular https://docs.kentico.com/k10/custom-development/editing-system-tables ), does seem to imply that we should be customizing the Customer class in the way we have.