Look into using an Atmega1284.
There's nothing wrong with using multiple microcontrollers if the task calls for it. You need to program each of them individually though, so if you have to update the firmware on multiple MCUs, that means multiple programming operations - I'd probably use something where you could plug in a serial adapter with the 6-pin FTDI pinout to program each micro in turn (assuming you'd changed the code on it).
This was sort of what I was thinking, but would that require multiple connection points, or is there a way to tie them together and somehow address them?Another possible solution I came across was the ability for one MCU to act as a programmer for another (though I don't recall the protocol). I'm wondering if I could adapt this so that I have an "updater" MCU that steps through updating each of the other MCUs in turn.I feel like I'm overcomplicating this, and might be better off surrendering to a single MCU. :/
could be electronic multiplexing using DG406, DG408, DG409
No, use the mux to connect Rx, Tx, and DTR from the FTDI Basic to the boards. USB is very high speed and too sensitive for muxing like that.
Have 3 toggle switches to the 3 address lines of the mux - toggle them as 000, 001, 010, 011, 100 to select which board gets connected to output 0,1,2,3,4 to talk with the PC. You manually select which gets programmed - I'm assuming each gets a unique program.
16 UNOs with supervisor processor.