Re: NDSolveValue::bcnop
Yes, I noted that NDSolve[] didn't work in the 2nd para. and suggested one might try to manually create an ElementMesh with the cuboids as subregions.  When NDSolve[] complains about not finding points on the boundary, I think of two things. One, it mishandles the solid region. Two, round-off errors cause the problem. 
In any case, I do not know whether generating your own element mesh would solve the problem. This tutorial, https://reference.wolfram.com/language/FEMDocumentation/tutorial/ElementMeshCreation.html, describes how to do it. If you need help, I suggest also asking on mathematica.stackexchange.com, since this discussion has not attracted the sort of expert help you seek.
Re: No vectors
If I remove the options VectorScale -> {Tiny, Scaled[0.02], None} and VectorStyle -> Arrowheads[0.02], I get some vectors.  The following shows that the norms of the gradients are quite small, with 3 having an exponent base 10 greater than -8 and most being between -9.6 and -8.6.  The variation in scale may be causing the vectors to disappear in the plot. Or maybe it's because VectorScale has been superseded as of version 12.1; see the link. If that is the reason, it would have been polite for Wolfram to have programmed in an error message.
The following shows that V[x, y, z] seems to be a constant 200, plus or minus some numerical error.
Table[(solution[x, y, z] - 200)/200, 
                      {x, 0, groundLength, groundLength/4}, 
                      {y, 0, groundWidth, groundWidth/4}, 
                      {z, -0.1, distanceToGround, (distanceToGround+0.1)/4}] //
                      Flatten // Chop
I figure you will conclude that NDSolve[] is not working properly. But if it is, congrats!