Your intuition that run carries more of a directional sense, while stretch has more of an area sense is correct. However, the relevant meanings of both are broad enough that you can treat them as interchangeable. All four of your examples are correct and sound natural to me (AmE speaker).
I would only make a distinction if I was using the two words in close proximity:
The path runs for miles alongside the cornfield, which stretches into the distance.
Otherwise, I might lean toward "stretches" if more than one direction were explicitly being referred to:
The cornfield stretched for miles in all directions from me.
But that's a very subtle distinction and, frankly, I wouldn't blink if they were used the other way.
If I were to try to really nail it down, I would say that stretch has the broader definition. Relevant from the OED:
13a. To have a specified extent in space; to be continuous to a certain point, or over a certain distance or area.... In mod[ern] use ordinarily implying a large extent; where this notion is not present the synonym extend is now preferred.
So, clearly, stretch works for either distance or area.
The most relevant definition of run is probably:
65a. To extend, stretch; to form a continuous line or boundary; to have its course.
One could argue based on this that run describing an area is not supported (unless you take stretch as a complete synonym). I would counter:
1) that the abstract senses of run are enough to cover this use (if a play can "run for hours", text can "run to the edge of the page", and an opinion can "run on for pages", surely a field could "run for acres"), or
2) that, as we are talking about the extent of an inanimate object (and not an activity), surely the object could "run" in multiple directions at once (the field could run for two miles to the north and five miles to the east), which amounts to the same thing as running over an area.