Track read/write network usage separately
If there's a high-level error opening the chain database (like wrong chain id), try to recover the database from outside the catch block, to avoid a thread yield which would lead to a crash.  May also be related to #790