groundFungus:
Do you know or can you calculate the number of steps per unit distance that your robot travels? If you know that, then take a distance measurement and then you will know how many steps to take to get to the wall. You still need to stop to get a distance measurement, cause pulseIn() blocks, but not as often. The Ping library is supposed to be non blocking, so maybe you could use that an not stop as often.
So there is no way to approach a wall and not make the motors stop to see how far the wall is?