Modelling complex sites has always been one of the things that I hate doing, as I always feel like I have to spend way too much time doing it to get it accurate. I try to keep it as simple as possible, keeping in mind what I need for presentation and documentation.
If you get a txt file or xyz file from the surveyor this can be imported, under the design tab, using Place mesh from Surveyors data.
Otherwise you can manually draw a mesh and add points to create the contours. This is usually what I do as often I want less points on the mesh, to make editing easy. It comes back to how complex the site is and how detailed you need the mesh for presentation and documentation.
AC19 has Point Clouds, but I haven't even looked at that yet.
For annotating the mesh you can always use the level dimension tool and use gravity to get the spot levels.
Modelling a driveway I use various methods using either slabs, roofs or a mesh depending on the complexity of the site to start with and how accurately you need it modelled. Again you can always use level dimensions and gravity to get the spot levels you want.
The other thing that I will often use is solid element operators when cutting out a large portion of the site