This piggy-backs somewhat on my post about the thief’s sneak and hide skills but I have another half-baked idea: instead of rolling for surprise and distance, just roll distance for each group. Whoever rolls a longer distance has surprise for the difference between rolls, in feet, before they’ll be discovered.
Here’s an example:
As the referee, I determine the party is going to run into a group of orcs. I roll 3d6 for the party and 3d6 for the orcs. The party gets 8 / 80 feet. The orcs roll 10 / 100 feet. Therefore, at 80 feet away, the party spots the orcs. The orcs see the party but the party won’t see the orcs until some combination of both groups’ moves put them twenty feet closer (or something else happens to draw their attention).
The big thing here is there will be a lot more surprise at various distances but only for brief moments (assuming one side continues closing on the other) and it will be rare that both sides surprise each other.