Was ist den wenn du 2 Interrupt Eingänge benutzt? Also einen für die positive Flanke und einen für die negative Flanke. Das kannst du in der Interruptkonfiuration im Programm festlegen.

Config Int0 = Rising
Config Int1 = Falling

Und die 20 Taster schließt du dann an ein ODER an und das ODER dann an Int0 und Int1.
So gibt das ODER bei einem Tastendruck eine positive Flanke raus. DIese wird dann am Int0 detektiert und der springt dann in die ISR. Sobald du den Taster wieder los lässt "entsteht" eine negative Flanke und der Controller springt in eine andere ISR.
Alternativ kannste das auch so machen das du 2 ODER-Gatter nimmst und du die Taster dann sowohl an das 1. ODER und an das 2. ODER anschließt.

Edit: Sorry meinte ODER Gatter keine UND