Schieberegister müssen nicht mal zu langsam sein. Selbst mit PWM könnte das noch gehen (allerdings mit eher wenig Stufen). Über das SPI interfache sind Schieberegister recht schnell und fast ohne Rechenzeit. Software PWM kann man in ASM auch überraschen schnell kreigen. Das sollte für 8 bit PWM noch reichen. Schon für weniger Störungen sollte man ja LED und Phase des Multiplexens ohnehin nur einen einzigen Puls variabler Länge haben.


Für eine 25x15 Matrix direkt fehlen einem ein paar Portpins. Von den 15 Leitungen ist immer nur genau eine aktiv. Das könnte man durch Logic ICs (ggf. sogar nur ein großes) lösen (z.B. 2 mal 74HC138+ 1 inverter ).
Dann käme man mit 25+4 Leitungen aus. So viele Pins sollte man freihaben. Die Lösung die UDN2981 über Vs zu schalten ist etwas kritisch, könnte aber eventuell auch gehen.

Es könnte sein das die UDN2981 nicht genug Strom liefern um 25 LEDs gleichzeitig zu treiben. Vor allem weil die LEDs ja 1:15 gemultiplexed sind, und eventuell mehr als 20 mA brauchen. Es kann reichen, wenn man sparsame LEDs findet.