Can we add more information in error messages for invalid address especially the errors mentioned in PR: https://github.com/bitcoin/bitcoin/pull/20832/

Example: 

Change https://github.com/bitcoin/bitcoin/blob/f385ad765174afb02e60900581612a19c143cf83/src/key_io.cpp#L103

To

```C++
error_str = "Invalid prefix for Bech32 address. Valid Bech32 address starts with `bc1` (mainnet) or `tb1` (testnet)";
```

Context: https://github.com/bitcoin-core/gui/pull/280#issuecomment-820957002
}
            if (version == 1 && data.size() == WITNESS_V1_TAPROOT_SIZE) {
                static_assert(WITNESS_V1_TAPROOT_SIZE == WitnessV1Taproot::size());
                WitnessV1Taproot tap;
                std::copy(data.begin(), data.end(), tap.begin());
                return tap;
            }
            if (version > 16) {
                error_str = "Invalid Bech32 address witness version";
                return CNoDestination();
            }
            if (data.size() < 2 || data.size() > BECH32_WITNESS_PROG_MAX_LEN) {
                error_str = "Invalid Bech32 address data size";
                return CNoDestination();
            }
            WitnessUnknown unk;
            unk.version = version;
            std::copy(data.begin(), data.end(), unk.program);
            unk.length = data.size();
            return unk;
        }
    }
    
    auto res = bech32::LocateErrors(str);
    error_str = res.first;
    if (error_locations) *error_locations = std::move(res.second);
    return CNoDestination();
}
} 
CKey DecodeSecret(const std::string& str)