In order to filter nodes based on whether they follow chain params or
not, the seeder needs to be able to handle the `HEADERS`
messages after sending a `GETHEADERS` message. This diff allows the
seeder to receive and process the new type of message and identify nodes
that are following the correct chain. Specifically, a node must have at least
the block immediately after the most recent checkpoint to be considered a seed.
If a node responds with a `HEADERS` message where the first header's
`hashPrevBlock` is not the latest checkpoint or if the message was malformed, it is
banned. If it receives an empty `HEADERS`, then the node is marked `bad`, but not
banned. Otherwise, the header is marked as a good seed. In all cases, the seeder
will wait until it has received addrs from the node before disconnecting.
Made in favor of D4439 and D4442 because splitting the diff would introduce a vulnerability.
Depends on D5682