I had something similar happen a few days ago working with editing content in a block list through the Umbraco api, as I was looping through the content it would always return all the blocks with the same data, like it was constantly overwriting itself as it was looping through, I was only trying to change one item in the list but it changed all of them.
After a lot of googling and digging around on stackoverflow I found my code wasn't 'thread safe'. The list of items I was looping through were all a copy of a single item, with a slight change to each, but this slight change was being applied to all of them. I ended up doing a very hacky fix to stop it.
Not sure if this is what is happening to you but it might be worth looking at.