You don't have to break compatibility here!
Just send a Packet250 with the actual dimension and then send Packet1Login with some random dimension, then edit it into the thing (like make a static field in NetClientHandler that sets the dimension of Packet1Login, rather than reading it from the wire in there).
Wouldn't be a lot of lines of code really...
I am, or rather was, trying to use BungeeCord as a Proxy for modded and non-modded servers alike.
The issue is only Packet1Login which Forge modifies.
Couldn't it just be modded so it sends the int dimension in a Packet250PluginMessage to not break vanilla protocol compatibility (and therefor allow proxies like BungeeCord to work seemlessly)?