The Seam Faces cross-field validator works by injecting a component into your validator. This might not be well suited to validating components repeated in a UIData component.
Since you are using RichFaces, have a look at the graph validator, it might be better suited to this:
RichFaces showcase | Graph validator
Thanks for the pointer.
I have used the Richfaces Graph Validator and I'm now able to validate each row successfully.
There is one gotcha though, for anyone reading this. There is a known issue with Graph validator and iterable objects. Since the Richfaces Graph Validator creates a clone of the object to validate, it can only resolve the cloned object itself and not any nested composite components (which I had).
The issue is discussed here..
Thanks to Alexander Smirnov for a workaround.