In most cases, datasets are used in a For Loop where indexing occurs from 1 by 1 until the dataset is exhausted at which time the test takes some action. The requirement you describe is that each Request must iterate over the data starting at the first row in the dataset.
The model, as seen in DevTest Workstation, is logical in that it does not depict the run-time implementation of Virtual Services and the objects that support the execution of the service.
DevTest implements an advanced virtual service threading model for performance reasons. As a result, DevTest does not always completely destroy the object that wraps the execution of the steps within the VSM; hence, some aspects of properties and dataset state may be there from one request to the next.
Because these objects are reused (i.e., not destroyed between requests/responses), there is always the potential for objects to maintain some amount of leftover state. I suspect that is what is happening in this situation.
I cannot say with certainty that the links below will solve the issue, but check out:
Resetting numeric counting dataset
In one of my testcases, I need to loop a web service execution test step for a particular request 5 times and when it hits 6th time i need to go to different step. Can someone help me in this.
Reloading Data Set