the problem for the kernel code is due to the fact that dzo added kaiser and polaris as a subdevice of vogue so the shared code between the devices is all in vouge.
Also you can't create a kernel without parameters because there are settings like screen type and keyboard type that are different for the same device.
There is another problem, if you place all the particular device part in modules you can't access to the irq after boot (we don't figure out why) and you need to release the modules for every kernel.