Part of #118145. This brush first stores an array of translations for each vertex and then reuses those translations for the rest of the stroke. I added a few utilities to simplify storing the data for all vertices for the multires and BMesh implementations. Compared to the old code, computing the translations is skipped for completely hidden or masked nodes. Also we don't skip hidden neighbors since that gives better results. That wasn't as easy with the old API. Pull Request: https://projects.blender.org/blender/blender/pulls/124569