Типа на каждый таймер сунуть в state? по мне это дичь Задача же вызвать повторный рендер, его можно вывести меняя любые данные, я вообще в классовом компоненте пустышку делал this.setState({})
изменения state вызывает полный 100% рендер компонента же изменения это как знак, что нужно пересчитать. Никаких анамалий тут нет
если ты переживаешь за перфоманс, вытащи этот таймер в отдельный компонент, передавая ему только стартовую точку. И тогда на каждый тик будет перерисовываться он один