Dynamic Changing of ISR Vectors

I need to implement my own Serial1 routines (Larger buffer, Token byte recognition etc)., while leaving HardwareSerial.cpp unchanged.
The easiest way would be to replace, eg the USART1_RX_vect to my own ISR. This is not possible in this architecture as the ISR table is in Flash memory.
I have a workaround by including callback routines within HardwareSerial.cpp. I wonder if there is a better solution. -Thanks