Collin80:
... This would then require zero hardware changes ...
Hello Collin80,
JTAG programming need no hardware changes at all.
You need only an JTAG-interface, which will be connected to the JTAG-pins.
JTAG can be chained, which means, that you need only one interface for the whole chain.
An SPI solution would be similar, however you would need one additional chips select line per device, while JTAG enumerates the devices over the position in the chain.
For both solutions you need the HUB-device, where the slaves (destination devices) are connected to. To make sure, that you can reach those devices from the hub under all circumstances, both solutions will need one additional GPIO per device, to reset in case it is stuck (Similar to the 16u2 solution of the programming port of the due).
The SPI solution needs additional development for the bootloader and programmer, JTAG programming works out of the box.
The SPI solution needs as well development of the client, which interacts with the bootloader. JTAG-access is possible with the gnu-toolchain (gdb, ..) out of the box. OpenOCD runs as server on the hub, and can be accessed over network.
The additional benefit of JTAG is, that it is primarily a debugging interface, which may help during development.