100+ encoders

wvmarle:
Which starts me to wonder: will you have enough memory to store all those values? Arduino's working memory is rather limited and you will have to keep them all in RAM.

I've not thought of this yet, first I wanted to solve the issue with how to address all the encoders before I even move on to picking which MCU I will use. I'm starting to favor the idea of using the spare ESP8266 I got, which should come with sufficient RAM. I've also got an Arduino due with 96kb RAM, which I think should be enough, so whichever I use, I don't think memory will be an issue.

So basically the consensus is to use 16 I/O expanders, and I prefer the MCP line as they come in DIP packages. Although I still have to read into the scanning matrix that was mentioned earlier...
SPI seems to make more sense I suppose? The MCP come in I2C and SPI packages, I'm not all that clear on their respective advantages, but if speed is the primary concern, is there any downside to using SPI?