Is there a way to get the controller class from a Request object or any other service class?
You find the controller class in a request attribute:
$controller = \Drupal::request()-&gt;attributes-&gt;get('_controller');

You need to instantiate the controller and run the code a second time. For not-so-easy logic it might be a better idea to refactor the code to a service which then caches the result for the second run, as @Hudri commented.
Or take a different approach. Place a custom block with a static placeholder on the page and replace it by attaching bubbleable metadata to the controller output. See Add an attribute to $variables from a Controller
Instead of a render array you can also replace the placeholder in a lazy-builder callback.  This depends on the structure of the data in controller and block and how dynamic this is. At the end this is all about caching performance.