not sure if all this sophistication is needed -- could not it just be just e.g.

```
bantime = 600
bantime.multipliers = 1 4 16 256 65536
bantime.jitterstd = 10
```
note that probably better to use normal distribution than just a uniform one, since with uniform it would just be that attacker could just stick with the longest possible with default configuration.  with normal (or may be even some other heavier tailed one) we could avoid giving him a 'good guestimate'

as for findtime -- I think it should be the same as before - shouldn't we just record (didn't yet try to understand the code, sorry) previous "level" of the ban,  downgrade it in the DB upon findtime passed since any previous update, and only whenever level goes negative (with level 0 -- ban is not active but "known") -- remove it... sorry if I am too cryptic -- I will try to elaborate if necessary when mind is fresh(ier)