I have a small suggestion, which I feel can address the ABI problem.
Why not extend the "Driver on Demand" thing, to include compilation on the fly?
Lets take an example scenario. I have some XYZ device which I plugin into my system. The system doesn't have the required driver. It sends the specification to the "Driver on Demand" site. Besides the device specification, the reuqest also contains the machine and the kernel specification, in all every parameter that is required to compile the driver.
The site only contains the source code of the driver plus details like which platforms and kernel versions its stable.
Based upon the request parameters and the driver specification, the site server automatically directs the source to a pre-configured machine of that type. And then the binary so obtained is sent to the user.
However this scheme places a good amount of load on the server. Their is another scheme in which we can compile on the user site, just like gentoo distribution does. For that we can embed a C/C++ compiler in the kernel, which is tuned according to the kernel configuration.
If the kernel versions and driver specifications do not match we can inform the user of the unavailability.