I would avoid using System.Timer and instead write my own solution based on MonoBehavior.Update.
The reason for that is that state of System.Timer will not serialize in unity, which will make live rebuild of code more complicated. Implementing this a simple timer-like code is trivial. Also, system.Timer will not correctly function with unity’s time scaling.
In this case I would avoid introducing multithreading needlessly and would implement some sort of queue for timed tasks.So, one timer, or no timer at all.
Of course, it depends on design of your code, and I know nothing about it.