Speed up arduino

I see here's something else I hadn't seen before. Until now, to me, interrupts need attachInterrupt() to work ...

Indeed not.

Although since attachInterrupt already exists in the library, you need to use that for INT0_vect and INT1_vect or you are likely to get a duplicate symbol linker error. Hmmm ... does a test ... maybe not.

Just one tiny inconsequential nit-pick because it -might- have a tiny chance to speed your code;
why combine the low and high bytes ...

Because of the comments in analogRead, which I reproduced.

Datasheet, page 251:

ADCL must be read first, then ADCH, to ensure that the content of the Data Registers belongs to the same conversion. Once ADCL is read, ADC access to Data Registers is blocked.