We never need to open database in read-only mode as it's controlled
separately for every batch.
Also we can safely create database if it doesn't exist already
because require_existing option is verified in MakeDatabase
before creating a new WalletDatabase instance.
This is a backport of core#20130
Notes:
- walletdb_tests.cpp is an addtional ABC test suite introduced in D745
- ABC does not have a CWallet::MarkReplaced method