Managing backward compatibility It seems (correct me if I'm wrong) that there are some classes or services that must be used in relevant cases in Drupal 9 that are not present in Drupal 8.
For example, New in Symfony 4.3: Simpler event dispatching Symfony\Component\HttpKernel\Event\RequestEvent in place of Symfony\Component\HttpKernel\Event\GetResponseEvent.
Same with temporary session storage and more.
This means that if these features are used in a module, the module can only be compatible with one of these core versions; but it seems like a complete waste to manage two codebases at this point, since the versions are still very similar.
What is the correct way to manage this compatibility in one module, and has this question been addressed by the Drupal 9 release team?
Yes, this has been addressed by the core maintainers. You are safe if your module doesn't use any APIs deprecated until Drupal 8.8/8.9:

Drupal 8.8 was the final release to introduce new deprecations that will be removed in Drupal 9

A quote from the Drupal release team: https://groups.drupal.org/node/535670
You should wait to remove deprecations introduced in Drupal 9 until you prepare for Drupal 10 and don't need Drupal 8 support any longer.
So beginning with Drupal 8 you can manage compatibility for two Drupal versions  at the same time.