For the 0.22 release we'll want to start hardcoding Torv3 addresses instead of (or in addition to) Torv2.

The biggest challenge here is not how to hardcode them, although that will require a few minor script and code changes, but how to collect them. The release process is to get the addresses from DNS seeders, however these currently don't support the `addrv2` message nor Torv3 addresses in the first place. Nor do they really have a need to.
uint64_t PruneAfterHeight() const { return nPruneAfterHeight; }
    
    uint64_t AssumedBlockchainSize() const { return m_assumed_blockchain_size; }
    
    uint64_t AssumedChainStateSize() const { return m_assumed_chain_state_size; }
    
    bool MineBlocksOnDemand() const { return consensus.fPowNoRetargeting; }
    
    std::string NetworkIDString() const { return strNetworkID; }
    
    const std::vector<std::string>& DNSSeeds() const { return vSeeds; }
    const std::vector<unsigned char>& Base58Prefix(Base58Type type) const { return base58Prefixes[type]; }
    const std::string& Bech32HRP() const { return bech32_hrp; }
    const std::vector<SeedSpec6>& FixedSeeds() const { return vFixedSeeds; }
    const CCheckpointData& Checkpoints() const { return checkpointData; }
    
    
    const MapAssumeutxo& Assumeutxo() const { return m_assumeutxo_data; }
    const ChainTxData& TxData() const { return chainTxData; }
protected:
    CChainParams() {}
    Consensus::Params consensus;
    CMessageHeader::MessageStartChars pchMessageStart;
    uint16_t nDefaultPort;
    uint64_t nPruneAfterHeight;
    uint64_t m_assumed_blockchain_size;
    uint64_t m_assumed_chain_state_size;
    std::vector<std::string> vSeeds;
    std::vector<unsigned char> base58Prefixes[MAX_BASE58_TYPES];