Nice writeup! A tiny nitpick, shareJS (DerbyJS) had/have an object based OT implementation (ie. tree) since before this was started I think (or around the same time).
We achieved something similar to shareJS functionality quite early, to be honest. What proved to be extremely difficult was all the extras to smooth up the user experience. We would have to (heavily) extend shareJS anyway, so it made more sense to go out with own solution, crafted for our needs.