Typically data for the ground points (also called bare-earth) is collected with a LiDAR mapping system. The laser finds spots between the vegetation to reach a lower level (hopefully the earth), and, when the data is processed, the lowest elevation found is used to make a 3D model. But this may not fit in your budget.
Another way is to use an App from the DroneDepoy collection that allegedly removes vegetation. I have not tried this App so I do not know how well it works. It seems like your case might give good results as you only have small plants to remove and lots of exposed sand. The App is call Digital Terrain Model which costs $19.99 per map.
A third approach is to export the 3D model from DroneDeploy and put contours on that. In my experience the DroneDeploy 3D model does not capture much detail associated with small plants so your contour lines may look fine. I import the 3D model into Rhino and then use a Python script with a nice GUI interface to generate 3D contour maps (which can be looked at in 2D of course). Here is an example with 1' contour lines:
There are more than 100 small plants around the building but they do not show up in the contours much. Only the really big 6' tall plants show up very well. Contour lines in metric units could also be generated. Here is the same contour map with 25 cm contour lines: