I know, no one asked, but what if some vertices were already split and you wanted to keep it this way? You can do so by capturing the indices before splitting (so after splitting the new vertices remember the vertex they were cloned from), move those vertices to <index, index, index> xyz position, only then merge by distance, and move them back to their original position:
This also solves another quandary, which is what if the scale of your model is so small (I don't know, a model of a processor or a biological cell), and the $0.00001$ m distance is actually too much? Obviously the easiest solution is to not work in the real scale (or decrease this merging distance further), but since in my solution the vertices are spaced evenly at $\sqrt 3$ (Vector((1,1,1)).length
) distance, a distance as big as $1.7$ will work. Notice how I use a whole meter in the merging. Perhaps this also makes the process faster, with less BVHTree cells? I don't know.
Using Robin Betts' setup, but with one vertex already ripped:
The Scale Elements is a handicapped version of the actual logic the OP needed, but the correct one is there in the Robin's answer.