Immutable peer selection refactoring and enhancements

This pull request is associated with [ticket #1382](https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1382).