Basically the biggest factor that led to me calling it 'hackish' is the way the higher engine IDs are handled - they're stacked on top of the existing 256 engines in slots 256-511, 512-767, 768-1023, etc. This can lead to situations where some code expects the regular 8 bit values, and some can deal with the larger values. (Note that this is the way Magic Buzz also went about it, as it makes the necessary changes relatively easy.)
I did try and fix this by creating a SlotID type and passing it along any time an EngineID is passed, but this got very out of hand very quickly. It would almost be impossible to implement in this fashion.
So maybe I can clean up the code some what and achieve an acceptable compromise. It's not ready for testing yet anyway because there are still some bugs, so I'll just keep working and post it up when it's ready for public scrutiny.
