Den ICP Pin kannst Du ja schon mal verwenden.
Als zweiten Eingang nimmst Du einen Interrupt (INT 0).
In diesen Interrupts wird nur der eine !!! Timer ausgelesen und in einem Hilfsregister (RAM) abgelegt und ein Flag gesetzt, das es einen neuen Wert gibt.
Das Hauptprogramm fragt dann dieses Flag ab und berechnet die entsprechenden Drehzahlwerte.
Da die Anzahl der Takte bis zur Abfrage des Timerstandes immer gleich ist, spielt es auch keine Rolle ob der Counter bis dahin weitergelaufen ist (beim INT 0).
Nur wenn Du für den Timer Überlaufregister brauchst, weil dir der Zählumfang von 65536 nicht mehr reicht könnte es beim INT 0 zu Problemen kommen.
Bei ICP ist das natürlich kein Problem.

Ich hab meine Interruptroutine so aufgebaut, das in beiden Fällen nur der Zählerstand von TCNT1 abgefragt wird und dieser dann im RAM für die jeweilige Drehzahl abgelegt wird.
Dieser Programmteil ist bei mir in Assembler.
(Na gut meine Drehzahlmessung funktioniert aber auch bis 800.000 U/min fehlerfrei.)
Der vorherige aktuelle Wert wird in eine "_OLD" Variable umgespeichert, weil Du die ja für die Berechnung der jeweiligen Drehzahl brauchst.
Dann wird noch ein BIT Flag gesetzt (z.B. dr1_new=1; ), damit dein Hauptprogramm weiß, das es einen neuen Drehzahlwert für die Drehzahl 1 gibt und die Berechnung vornehmen kann.
Dann musst Du nur noch im Hauptprogramm das Verhältnis der beiden Drehzahlen feststellen und daraus den Gang ermitteln und die LED's zum leuchten bringen.
Probleme seh ich dann nur noch wenn ausgekuppelt ist