When I did http://collabedit.com I used the approach outlined at: http://www.codecommit.com/blog/java/understanding-and-applyi... with an md5 hash for the "Operational Parentage" piece.
It was pretty tough to implement (for me at least). Especially when I got to using the "Bridger" and "Buffer" to transform.
Your approach seems much simpler. Do you retain the ability to "play back" the edits like etherpad did?
How big can a document get before you run into the precision issue you mentioned?