This makes the access to the per-peer datastructure lock-free and thread-safe.
The main goal of this is to make sure that network services implementations don't reuse one bufferpool for all their remotes as that can cause threading issues. One bufferpool per remote is now made easy.