I will answer it this way:
It depends. The issue you described sounds to be related to either a timing issue (the tests are running faster than the application can keep up) or an object identification issue (objects are identified using dynamic properties that change from run to run). Adding hard coded delays for the former HELPS... but it's no guarentee. That's where Wait methods work best.
As for the second possibility, it's hard to diagnose as it is. For us to help you best, we'd need to know what errors, specifically, are showing up in the log to make sure it is object identification problems. We'd also need to know more about the objects taht it's failing on (property/method listing, class, etc).
So... yes, there is an answer to your problem, but it will take some work and some more information from you to solve it.