Bound the response-endpoint name lookup

Pre-push Gemini review flagged the DNS lookup in resolvesToRestrictedAddress as
a blocking call on the request path, which is right: InetAddress offers no
timeout of its own, so a caller could pin threads just by naming hosts that
resolve slowly.

Two changes. A literal address is now recognised syntactically and never sent
to the resolver, which covers the direct-IP cases including the
instance-metadata address. A real host name is resolved on a daemon thread the
caller can give up on, bounded by responseEndpointResolveTimeoutMillis
(default 2000); on timeout the endpoint is refused, since a name that will not
resolve promptly here would stall or fail the send anyway.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
4 files changed