There is not a way to check if a timer has been set. It would be a different & more expensive protocol if that API were available. Timers are deliberately a "blind write" API. The best approach today is just what you said - add a ValueState<Boolean>. But that negates the performance benefits of the API design.
But your use case is actually probably many uses of timers. I'm adding the dev list to broadcast the use case. It probably makes sense to have a "set if unset" API and/or a "set to the minimum of current time and this new time" API, both still "blind writes".