This reduces coupling validation.cpp from netaddress.cpp (transitively,
timedata.cpp, and asmap.cpp). We unfortunately still have the transitive coupling with these modules because of `validation -> avalanche/processor -> net`.
This is important for libbitcoinkernel as:
- There is no reason for the consensus engine to be coupled with
netaddress, timedata, and asmap
- Users of libbitcoinkernel can now easily supply their own
std::function that provides the adjusted time.
This is a backport of core#25064