The triangular subdivision works beautifully. Or rather, it worked great once I got rid of some insanely complex and intractable code that was trying to maintain links to whatever triangles were potentially adjacent to each newly subdivided triangle, for no good purpose as it turns out. (I wanted to ensure that when adjacent triangles are subdivided, identical points were created. But that can be accomplished simply by making sure you generate the new points in a deterministic way, so it doesn't matter which triangle is attempting to make it.) In coding as with writing, often the best answer to something that's causing you trouble is to delete it.
Anyway. Merry Christmas all. Hmm, think I should at least put on the fire and make some hot chocolate or something.