The way llblgen pro does it is by checking PK fields. Say you have Employee <- Manager. Fetching rows therefore should include all subtypes through joins. This then gives:
[EmployeeId|Name|DateOfBirth|ManagerId|ManagerSince|.....]
If ManagerId is NULL, it's an Employee. If ManagerId isn't null, it's a Manager.
This logic is present in the InheritanceInfoProvider, retrievable from the singleton in the generated code. The method is GetEntityFactory. The problem for you is, it requires a list of indices which field is the starting point for which entity. In the example above, it's 0 for Employee and 3 for Manager.
The method will return, based on the row, the factory to create the entity class instance of the entity type the row is an instance of. As you fetch a typed list, this is likely going to be a bit fragile, as you have to produce the index dictionary and that's based on the typedlist fields, which might change and therefore your code should too. You could loop over the fields in the typed list, and build the index dictionary from that though, check the field's ActualContainingEntityName and whether it's a PK field.
Hope this helps.