Basic exception hardening, ensuring TimerTasks don't stall

Other than a rename of a misspelled method, this just wraps DB calls done within TimerTasks in a retry block & a catch of `NonFatal` exceptions to ensure TimerTasks don't stall. We've been seeing this in logs occasionally:
```
Exception in thread "Timer-0" java.sql.SQLException: database is locked
        at org.sqlite.DB.throwex(DB.java:370)
        at org.sqlite.DB.exec(DB.java:76)
        at org.sqlite.Conn.commit(Conn.java:343)
        at scala.slick.jdbc.JdbcBackend$BaseSession.withTransaction(JdbcBackend.scala:333)
        at scala.slick.driver.JdbcInvokerComponent$BaseInsertInvoker.internalInsertAll(JdbcInvokerComponent.scala
```

So this'll catch it and continue. It's better than silently halting data collection.
Yeah, good idea. Will wrap that in a transaction instead.