So I thought that changing my game coordinate system from 'int' to 'float' would wreak havok and... I was wrong. Changing everything took less than an hour, cleaning up some warnings took 15 minutes, and the game now plays 10 times better.
This story has 2 morals:
Carefully crafting modular software on the front end will save you from huge headaches when you (inevitably) end up changing something fundamental later.