Multiple timers with different frequencies
My suggestions would be:


Implement a class that handles the queue and timer settings and uses callbacks.
If you do not need perfect accuracy, remove the loop making the program wait and do that part just setting the timer.
digitalRead() on an output pin returns the value it was last set to, therefore you do not need to waste that extra RAM.
DO NOT wait in the ISR "process_timer()", since you might lose other interrupts! (for the Serial communication, for example)
is it neccessary to have only values above 200? if not, then don't prevent them from going below that.


--or

use a total overkill system for this situation, such as my multitasking-library arduOS that also covers a some other things.