Avoid opening copied wallet databases simultaneously
Summary:
Make sure wallet databases have unique fileids. If they don't, throw an
error.
BDB caches do not work properly when more than one open database has the
same fileid, because values written to one database may show up in reads
to other databases.
Bitcoin will never create different databases with the same fileid, but
users can create them by manually copying database files.
Backport of core PR11476
Depends on D2278
Test Plan:
make check ./test/functional/test_runner.py multiwallet
Reviewers: #bitcoin_abc, deadalnix
Reviewed By: #bitcoin_abc, deadalnix
Subscribers: teamcity, schancel
Differential Revision: https://reviews.bitcoinabc.org/D2281