[bugfix] wallet: Fix duplicate fileid detection
Summary:
The implementation in current master can not detect if the file ID is duplicate with flushed BerkeleyEnvironment. This PR would store the file ID in a global variable g_fileids and release it when the BerkeleyDatabase close. So it won't have to rely on a Db*.
Depends on D4884.
Backport of core PR14320:
https://github.com/bitcoin/bitcoin/pull/14320/files
Test Plan:
ninja all check ./test/functional/test_runner.py wallet_*
Reviewers: #bitcoin_abc, deadalnix
Reviewed By: #bitcoin_abc, deadalnix
Differential Revision: https://reviews.bitcoinabc.org/D4885