One of the fairly recent additions to Blender (as of 2.79) is the ability to do micro-displacements.
This has made it much easier to do detailed mesh displacements with DEMs.
You no longer need to displace a very detailed mesh, instead the displacement is done at render-time, so you can create detailed mesh displacements with minimal vertices. The limit now seems to be the amount of memory you have to load the rasters, rather than geometry complexity. Before, I couldn't comfortably get above 2000x2000 pixel rasters. Now I can quite comfortably do 6000x6000
This is an image of Canterbury, using 1m open lidar data from the Environment Agency. The raster was prepared in QGIS; I used png in this case (using Export to Image, 6000x6000). PNG is restricted to 256 values; as I've not got a smooth terrain here, this is sufficient.
For mountain landscapes I'd recommend exporting to GeoTiff instead, which uses floats for elevation. If you use GeoTiffs you need to make sure the texture node used for displacement should use 'non-color data' instead. You also need to be careful to remove nodata values (e.g. by replacing them with 0)
Here's the node layout for the plane. The displacement raster is the DEM, the colour raster came from running the 'Sky View Factor' in SAGA, and colorising with the "Magma" gradient. This helps pick out ridges and roof edges, and I find it makes it much easier to 'read' than using hillshade alone.
The ‘tilt-shift’ effect was done by adding an empty where the spire is, and setting the camera focus/depth-of-field.