When loading a proof in the wallet that created it, if the master key is one the auxiliary private keys, we can find the private key from the deserialized public key instead of making the user paste the key.
This used to work with the assumption that we always use index 0 to derive the key for proofs. It was broken with D14603 when we made the program not reuse keys.
Fix it by scanning up to 20 recently used auxiliary keys.
Introduce a `StorageKeys` class to avoid repeating (and possibly mistyping) the storage keys and their default values.