This should be marked as the real answer since there is no other way to start a new process while one is 'running' and died in a way the system did not expect, such as a reboot during the timer's run.
For the case when the timer is waking up itself - what I did I removed all logic from the timer and published the espace. On next wake up it picked up the new code and exited. Simple and no messing with DB. But really there should be a way to stop it from service center, which I was looking for.
Recently I had another idea, but to be honest I didn't try it because that was production and I didn't want to risk.
Probably if changing timeout setting in the timer properties in service center to 1 minute - it will time out before waking up itself.
PS. Noticed my previous comment was 3.5 years ago. It seems all of the issues and missing features around service center are still there. Just saying...
You can also add logic to look at a site-property e.g. TimerStop to decide whether to continue processing or to wake itself again. This way you can control the timer from service center by changing the value.
To stop a itself waking timer, give the siteProperty a default value True, insert an if statement before waking up the timer again and skip the waking of the timer when the value is True.
This doesn't help of course in the case the timer-process crashed somehow and didn't have the change to register itself as not-running. In that case only manipulation of the "IS Running_Since" field or waiting for the time-out will be the option to run the timer again.