Check out my "fixing a muddy run" page (link in .sig below) for a bunch of ways of dealing with the problem -- it usually works best if you do as many different things as feasible, rather than JUST rely on adding sand or whatever.
As you have noticed, a tarp over the run does not work unless it is supported very very strongly AND pitched sharply, so it doesn't catch water. An actual solid roof works far far better but, obviously, is rather pricey. In some climates/sites you can do a reasonably-useful 'fakey' roof, though, by erecting a cattle panel hoophouse over your run (do not try this with pvc, you NEED cattle panels, and it needs to be a relatively narrow steep hoophouse too) and then attaching a tarp over that. If you live somewhere windy, this will tend to leave, sometimes messily. If you make the hoop too flat/shallow, it will still catch rain and sag/collapse. But if you live somewhere where high winds are not a big issue and you build it right, you can get reasonable mileage out of something like that.
Good luck, have fun,
Pat