Isn’t it quite convoluted for such a relatively simple thing? Fist, painting a texture might take time unless there’s a way of setting all pixels at the same time (certainly not looping through all of them). But then the UV mapping complicates it all, because as stated in this post, if the sprite is part of an atlas you can’t get it’s UV easily.
It might also by that I didn’t understand the custom vertex attribute part