I would definitely use compositing here … and I would explore what can be done using only the (2D, but depth-aware) transformations that the compositor can do.
For example, if you have your render-output in a “MultiLayer OpenEXR” file, then you can include in that file a “Z-depth pass” which tells you, pixel-by-pixel, how far away from the camera the object that produced that point is. You can therefore apply that data (using a curves-node to give you precise control of it) to “blur” points of the image, thereby creating the acceptable illusion of DOF, but without the cost.
(And if you don’t have such a pass, just run the model through a greatly-simplified Blender-Internal render, just to get the Z-depth map.)
“As a blanket statement,” I’d suggest that you should look upon the renderer (any renderer …) as a producer of raw-materials for subsequent compositing (“digital darkroom work”). As Ansel Adams, the famous photographer, put it: “A picture is captured in the camera, but it is made in the darkroom.” The same sort of reasoning applies here. The renderer gives you an array of pixels, and corresponding arrays of other information. It doesn’t give you “the finished scene, all in one swell foop.” You don’t ask it to. You use whatever renderers will give you the data that you want, as quickly as you can get it. Then, you take it all to the darkroom.