The .show() function in the neopixels library turns off interrupts. I can see how it could get tangled up with the timer capture and overflow interrupts
How fast do you need to see the display change?
What happens if you call dimmer() every 250 ms on a millis() timer?
How fast do you need to update rpm? What if you only run the timer capture cycle periodically?
Perhaps you you run program like a sequential state change
- get rpm
2)update median filter
3)display results