Support Statesync Recovered Thornodes
We had an issue where when pointing Midgard at a Thornode which has been statesync recovered, it gets stuck in a re-sync loop failing with the following on restart:
First block after fork mismatch, ThorNode: 74F950FACE5A128ED3953CBAD1EDFDF81910C48DCBD43CACBA016B2F11F58BB2, DB: 9B86543A5CF5E26E3CE93C8349B2EABE5E238DFFC9EBE8EC6207FE7178FF27AC
This is due to the assumption that the earliest_block_height provided in the status RPC endpoint is the first block in the fork, which is not necessarily the case. When a Thornode has been statesync recovered the earliest_block_height will be the first height after the snapshot, and while the first block of the fork could be retrieved from the genesis RPC endpoint there is no way (to my knowledge) to retrieve the hash of that block on the statesync recovered node.
This change updates to simply add the hash of genesis block of the latest chain to the well known fork info and warn when the value from Thornode is overwritten (it was previously silently overwriting the height but not the hash). This should allow the existing mechanism which forces a re-sync when the mismatch is detected to continue to work, but only when the hash is not provided in the fork info (i.e. around the time of the next fork until the well known info is updated).