Я бы сделал один таймер, но установил его на ближайшее событие.
Перебираем все задачи, находим самую первую по времени. Устанавливаем интервал таймера до этой задачи (время задачи минус текущее время)
Когда задача выполнилась, делаем переопределение интервала по тому же алгоритму.
Также не забываем менять значение интервала при добавлении/удалении/изменении задачи.