I need to do one of two things (in priority order, but just need one of them).
All of this is to be done inside a function that runs as an Exception Event Listener (http://api.symfony.com/2.2/Symfony/Component/HttpKernel/Event/GetResponseForExceptionEvent.html).
Both below are totally easy inside a normal controller, but I can't see it possible inside an event listener function.
(1) Run a controller as normal and output as normal as though that route had been executed:
e.g. $event->runController('controllerName');
(2) render a template as normal using the same syntax as would inside a normal controller:
return $this->render('Bundle:Default:feedback.html.twig', array([template vars]));