The way to read and write messages to all Hercules devices is exactly the same as it's done in current scripts with midi.sendShortMsg. The numbers are the same as what is currently in the scripts. Just use USB bulk transfers to and from the first Interface Descriptor with bNumEndpoints = 2. This works for at least the MP3 e2, and the Mk2 (thanks KWhat4 for helping me test).
So, for instance, the way to make the Deck A "CUE" LED flash is by sending "90 3e 7f", which, it turns out, appears in the MP3e2 script. I've added this to my proof-of-concept "driver" at
http://woozle.org/~neale/g.cgi/hdjd, which also turns the LED on a button when you press it and off when you release it. It looks like all the Hercules devices use this same 3-byte packet for both incoming (buttons, faders, and knobs) and outgoing (LEDs) messages. And it seems like they can all handle USB bulk transfers.
If the last two paragraphs didn't make it obvious,
it should be possible to use any Hercules DJ console without any drivers and minimal changes to existing scripts.
The next step is integrating code into Mixxx, and then submit a patch and hope it's accepted. This is where I am going to slow way down. If anybody experienced with the Mixxx codebase would like to lend a hand, please let me know! The best way to contact me is in IRC: my nick is "neale".