There is a data race where UpdateAvalancheStatistics() may be called while
m_avalanche_state is being initialized. This patch refactors out the
AvalancheState container which is not that useful since it only saves a few
bytes per peer that does not respond to avalanche polls. The resulting design
is simpler and less error prone.
Redo of D12345 per design feedback
Depends on D12325