Do nothing in ChainSwitch if already at same tip block
Do nothing in ChainSwitch if already at same tip block

The SPV syncer may call Wallet.ChainSwitch concurrently for multiple
peers, and if this occurs and the chain had already been extended by
data provided by another peer, a logic race made it possible for the
syncer to error and restart due to a total work check.  This change
works around the logic race by doing one final check while inside the
database update, where if the tip block of the chain being attached is
equal to the tip recorded in the database, no changes are performed
and the method does not error.

decred/dcrwallet,decred/dcrwallet