How to get new textures without sacrificing the vanilla ones?
Solution 1:
Kind of.
What you can't do is create new blocks with a custom texture without replacing a vanilla one.
What you can do however is creating block models using custom textures for specific ITEMS and display those with the help of ArmorStands holding them/wearing it on their head. You can make them look like regular blocks and have an almost unlimited amount of them, since every damage value of every item can be used to make it look differently as well as depending on the Unbreaking tag you can double these amounts. So a single diamond hoe can hold over 2000 different models (which would cause a lot of lag though).