Add periodic node discovery with optional filters

Add support for periodic node discovery via system.peers.

This lays the foundation for more feature full connection pools, such as token aware host selection.
All the errors in this function should be logged. Otherwise clients won't have any error messages to report to us when reporting bugs.