Is there a shield that just gives you more ports?

Total rubbish. There are a lot of poor tutorials about, written by people who get something working and then thing they are experts.

Any analogue multiplexer can work as an input or an output.

A good library or function can make the code easy to drive.