More useful tracking of useful peers (ones that actually serve useable blocks and txs, rather than version messages, inv messages, getdata messages).
Gotta be honest, I don't fully understand what this code does - but somehow this change seems to intuitively make more sense than the current code.