As long as an LED gets lit within 1/60th of a second of an event, you won't know whether is was coincident or not. The only requirement is that when the dance stops, the proper lights are lit (within 1/60th second). Actually, 1/30th may be ok as well. It's an eye versus flicker thing.
You can EASILY use an IO Expander like the 16bit MCP23S17 running at as high as 10 MHz! No problem shifting out the bits at some reasonable clock rate and meeting the 1/60th second thing. Extra points if you use the hardware SPI gadget rather than bit-banging and doing it with an interrupt on each transfer means it will work by magic. Just stick the LED values in a known location (an unsigned 16 bit int) and every time there is an interrupt, the latest value gets sent. The SPI gadget can only handle 8 bit transfers but what you do is lower CS', send the high 8 bits, send the low 8 bits and then raise CS'.
Did I mention FAST!