Im not sure a bmap_for_screen or a file_for_screen would be faster then a second rendered view
another possible idea is use a flat mesh ( size of your screen set it up to face the view rather like a panel) then bmap_for_screen bmap_for_entity it then try deforming the mesh the mesh for distortion
but any of these methods would be a hit on framerate
only other option i can think of is a shader that would somehow pull pull/smear pixels based on a vector distance and direction ( closer to center less distance pulled/smeared) from the center of the screen. would need one of them shader gurus to see if thats possible.