Millis versus centis on AVR platform
50 clocks is not 50 us when running at 16 MHz, it is about 3 us.  So 0.3% overhead, not 5%.  You can certainly do that, but I have never had any issues with running a small ISR at 1 kHz like that before.  It might be a good idea to re-implement it just so you can add more stuff to run on each timer tick, or schedule stuff to run on future ticks.  A method I use quite often is to schedule something to run on e.g. 1 second intervals by storing the current time + interval in a variable and then when the time exceeds the future timestamp, I increment the timestamp by the inteval and then run the code.  If a tick gets skipped, then the current call just gets delayed by one tick.  It would be very easy to use this method to run stuff on 10 ms or 100 ms intervals.