How do I alter the complete url, not just the path, of nodes? When a node's field "External URL" is filled, I want the URL of this node to be that field's value wherever it is rendered/ teasered.

Writing my own service and class using (implementing) InboundPathProcessorInterface and OutboundPathProcessorInterface I can only alter the path, but the base url still gets prepended.

So, whats the correct way?

I thought maybe extending the entity and extending the toURL() function might be the trick, but that seems like a lot of work for a simple feature, does it not?

Edit: I know I can just setup redirects, but for the sake of completeness I'd like to know.
InboundPathProcessorInterface can't do it, that's an incoming request, it has no way of redirecting to another site, because that's what you have to do.

Implement something similar to redirect.module: a request subscriber that sets a redirect response.

For outbound processing, that definitely works, but you have to set the right options. Have a look at how \Drupal\language\Plugin\LanguageNegotiation\LanguageNegotiationUrl::processOutbound() sets the language domain.