Got to revisit the problem last night, started debugging things with a multimeter... turns out the person who wired the encoders had broken the encoder wire in several places by zip tying it in a bundle. I now have a good story to bring up whenever something's blamed on the programming
