Well stone me, it works
I'm hugely surprised to be honest. I expected more fire, or at least some melting.
I do have a problem with the L293 on power up - it drives all four outputs high for a few seconds until the MCP23S17 is initialised. I think if I pull the enable lines low this should stop. Probably not good to drive every point on the layout in both directions simultaneously for a second. Certainly not at 1.2A per point per direction!
Incidentally the diodes you can see on the reverse of the motor are the flyback diodes. These are ultra-fast UF4007s, because that's what I had to hand. I really need to leave it on a soak test to see if the L293 survives.