Hey Nil,
It's been over 2 months since I actually had this problem, and since I couldn't make it work I threw away the code for this particular functionality. I usually implement hash and equals for my VOs, but I could've missed this particular one, no way to know now.
What I pledge to do is, the second I have some free time, try to implement this again, double checking the hash and equals in the lazily loaded row objects, and get back to you. If it doesnt work again I'll post a sample of the code here.
Again, thanks for the attention.
It sounds to me like the real issue here is that all of the rows are sharing a row state or are otherwise being enabled by the editing of the one row.
Are you implementing hashCode() and equals() for the row objects being lazily loaded?
A test case would make the issue more clear.