When I detect one of my six events, what do I do?
Those events will trigger an isr and in the isr you will save the timer's value (lsb) and the msb -> software capture.
Won't that take a large amount of time, killing the accuracy?
The isr + execution will likely take 20 ticks. So whatever value you have "saved" in the isr (mostly the lsb) will be "wrong" by the 20 or so ticks.
So, yes, this approach will "kill" the accuracy from that perspective.
However, the latency is deterministic so every captured value will be "wrong" by the same 20 ticks or so -> making the differences in the captured values accurate.
And if you are looking for absolute accuracy down to a few ticks, the arduino is the wrong platform for that.