Scale & Snap to Fill Space
The best way to go about doing this (that I know of at least) is actually very close to what you are doing already. There are a few minor (but important) differences though.

First, we will have to enable vertex snapping, and we can leave it at the default setting of Closest.

Next, we will need to go into edit mode, select your entire building, and hover your mouse over a vertex that will line up exactly with a vertex in your terrain. A corner is a good choice for this.

Then, with the mouse hovering over the corner vertex, move the building while holding Ctrl  and move your mouse over to the corresponding vertex in the hole in the terrain. The building should snap to this vertex. This is exactly how the Closest setting is supposed to work: the closest vertex to your mouse on object 1 will snap to the closest vertex to your mouse on object 2.

Now you can confirm that operation. Select just this corner vertex on your building now, and set the Cursor to Selected from the ShiftS menu. Set the pivot point to be the 3D cursor using ..

Select the entire building once again, and pick another vertex on the building that will exactly line up with another vertex in the terrain. The opposite corner is a good choice, or something similar. All that matters is that there is a corresponding vertex in the hole in the terrain.

Hover your mouse over that vertex, scale the building, and move your mouse to the corresponding vertex in the hole and the building should snap exactly to the hole.

Since we've done all the transformations in edit mode, you may want to re-position the origin of the building in object mode just to keep things organized (Ctrl+Shift+Alt+C and choose Origin to Geometry).