The semantics of this is basically: so something broke? Ok, unlock, because it was locked correctly. If something fails while unlocking, well, let me know.

We cannot use the unlock from bellow because it ends up executing init_db (see bellow-er). Unless we have a boolean value `failed` set to True if something fails in `_get_or_gen_crypto_secrets` and if that's the case, it'll return after the unlock from bellow. May be that's a better approach.... thoughts?