Having never implemented something like this, I wonder if the algorithm could take into account how long the cursor lingered on each position before being let go. If it spent significantly longer in a position before the word, and your finger happens to move a little bit when you let go, that slight movement shouldn't affect the cursor position.
Apple is usually pretty good about this stuff but they've really been slipping on the keyboard.