Well its no big secret that with LLBLGenDataSource2 you can add a bit of code to 'PerformWork' to wrap the returned elements each in their own Adapter. The problem I had was that the 'PerformWork' handler is inside a framework so it wasn't so easy to customize it for just one type of collection. So I just added a hook into the framework inside 'PerformWork' so that any list could wrap all its elements in an Adapter right after they've been returned.
I have the Adapter returning default values for derived class properties when it wraps a base class instance.
Hope that makes sense!