Its better to do a trace to determine where the terrain is exactly and after that move the ent downwards (not set its z value) because the collision detection will work and the ent will 'bump' at the terrain,exactly where it should be (possibly a little offseted in x/y if glide is set).
For finding a vertex (also calculating a z value on a certain point of the terrain) theres a solution. Store each vertexs x/y/z coordinates in an array. Check to see where the player is according to this array and you'll get the closest vertex , and can be used to get the closest 4 vertices wich make the polygon. Then , you have the z values of the 4 vertices , you can get the average z between them , and calculate at what z value an ent should be when its in this x/y spot.
Not tested , but it should work , and IMHO its worth a try.


Extensive Multiplayer tutorial:
http://mesetts.com/index.php?page=201