I'm currently working on a similar solution for an extensible data structure much as yours. My use case is:
Depending on the deployment, there's anywhere between 50 and 300 sub animal tables. It makes no sense to create CLR objects for each deployment as they can drop and add tables at a whim.
My strategy (I'm still sketchy on how it's actually going to work)
Create strongly typed Animal object
Create strongly typed metadata objects (contains table and column information from sys views)
Create a SubAnimal : Animal object which would contain the metadata objects and a dictionary mechanism that would store values for properties
Create a custom entity provider and entity table which inherits from IQToolkit classes
Override the Insert and Update methods of EntityTable<T>
This is where I'm stuck, trying to get in the middle of the expression tree generation for the various objects.
Does anybody have a good starting point?