I was hand UVing these inside of VSCM and can hardly even call myself a beginner, I'll give this a look myself and give it a try! I appreciate you providing files for reference thank you!
I spent two hours this morning trying to get 16x16, 32x32, and 64x64 texture height/width to work within the JSON and all gave me the same misaligned texture issues I started the post with. I don't fully grasp how VS works when it comes to textures.
I'm not sure if ALL block data should have:
"textureWidth": 16,
"textureHeight": 16,
no matter the size of the texture or if these should be accurate to the actual texture size. I initially worked under the assumption that due to vanilla files being 32x32 that the Width and Height within the block JSON should be 1/2 of what the texture size is but that seemed to make little difference.
Edit: Your file does work, I am still incredibly confused as to why it does (and may likely never fully understand the why or how). I pulled your file into the VSCM tool, changed the texture size to 64x64 and the UVs data is not aligned in the tool. Yet in engine it works just fine now. Frustrating but also a relief, thank you for your assistance here I'd have never been able to get this resolved without it!