Finally got to the bottom of this.
It was the config file. There's something in /etc/hyperion.config.json which was silently preventing Hyperion from sending any commands to the LEDs. God knows what the exact problem is - when things stopped working I was tweaking colour correction settings - but wiping out and starting from the default file, suddenly my LEDs sprang to life (currently with the Arduino but I fully expect that when I revert to using SPI from the Pi it'll work too).
Annoyingly, when trying to debug I'd de/reinstalled Hyperion a few times, but in every case I just went and uploaded my regular config file.
So there's clearly a Hyperion bug of some kind, but I'm marking this thread as solved.
EDIT: Luminance gain. I'd somehow set it to 0, but it's not entirely obvious that this sets the brightness of your LEDs to zero!