Creo que no puedo usar los registros de desplazamiento porque necesito alimentar cada LED por separado de los demás.
Esa oración no tiene sentido. Los registros de turnos y la potencia del LED son dos cosas separadas.
Su mejor opción es utilizar una cadena de registros de desplazamiento de controladores LED de sumidero de corriente constante, como el STP16CP05.
Si desea volverse más descentralizado y resistente, podría pensar en agrupar los LED en pequeños fragmentos, cada uno con su propio microcontrolador, y usar algo como RS-485 para crear un enlace de comunicación troncal entre todos con un maestro El dispositivo envía los comandos para indicar a los esclavos que enciendan y apaguen los LED. Esa sería una mejor solución en un entorno industrial ruidoso. Aunque las bibliotecas rara vez son ruidosas;)