There's no way to overwrite the value currently associated with a cursor, that is, we always search the tree on a cursor->update, which means a read-modify-write cycle searches the tree twice instead of once.
The cursor has all the information necessary to just do an update, we'd just need an interface that does an overwrite instead of a search + overwrite.
(Or some way to know the cursor key's value hasn't changed between the cursor->search and subsequent cursor->overwrite)?