Je nach LED kommt man auch mit weniger Strom aus. Auch so kann der µC die LEDs mit je etwa 10 mA direkt treiben - bei weniger Strom noch um so leichter. Je nach LED reichen auch 1 mA aus.

Werden die 20 MHz als Takt wirklich gebraucht ? Bei niedrigerer Frequenz könnte man mit der Spannung (ggf. 3,5 V?) etwas runter gehen und so Strom sparen.

Die Optokoppler kommen auch mit weniger Strom am Eingang aus. 5 mA sollten da reichen - das wären eher 4,7 K für 24 V als Spannung am Eingang. Gegen eine Fehlbedienung und ESD sollte noch je eine Diode Antiparallel zu den Eingängen. Auch wenn es mehr Strom braucht, würde ich externe Pullup Widerstände für die Optokoppler vorsehen, denn mit den relativ großen internen Pull-up Widerständen sind die Optokoppler relativ langsam und auch Störanfällig.