Earliest point in page load to issue a redirect?
You should create an EventSubscriber! This post gives a pretty good code example. 

I'm doing exactly this and I had some issues when the media's file changes, the redirect will be cached and still point to the old file. To get around this I use the page_cache_kill_switch service which you can inject into your subscriber or just call like:

\Drupal::service('page_cache_kill_switch')-&gt;trigger();


One other note is that you'll want to make sure you only fire the redirect when the route \Drupal::routeMatch()-&gt;getRouteName() == 'entity.media.canonical'. This will make sure you only redirect when trying to view the entity vs edit or etc.