I bat between Rhino and ZBrush. I’m not sure I can say it is the best solution, but it works pretty well, and I had ZBrush for other sculpting work. When you need to make a change to the terrain in Rhino, you export as OBJ, import into ZBrush, do your tweaks, then export out of ZBrush, and when you import back into Rhino, it drops right in. I then have a little Grasshopper definition that does my topo lines for me.
ZBrush doesn’t have any “level, flat, at this height, this far away from that thing” kind of tools, so if I have an area that need to be graded for hardscape say, I’ll flatten that area in Rhino, then take it back to ZBrush for blending / making it look good. So there is a fair amount of back and forth, but at least it works.