Short and Simple.
Tools and weapons would have a new data tag. The Tag would be called Texture. Each default tool and weapon have a texture value of 0.
The uses for it allow people to make new textures for items in the game with out limiting themselves to say 5 different weapons.
This allows for a players experience of items in custom maps, or projects where they make multiple items differ.
An example of potential uses.
A custom Shop sells bows. these bows have different enchantments and Texture values and the player could feel like they are experiencing a new item when its just a bow with some different enchantments and a different texture.
Last Note. If the resource pack does not have the texture value of said weapon the game should simply display the default texture.
I also feel there should be a built in limit to the amount of textures a single item can have. as to prevent an overloading on textures and the game as a whole.