The stairs blockstate does a lot of rotation any block that doesn't render the same no matter how you place it has some rotation in its blockstate JSON.
I would suggest Adding capabilities to the player to save your data, using a player tick event to do things after a certain amount of time, and using events to set a boolean that is saved to the players capabilites.
You create 4 items one for each piece of armor, initialize them using a class that extends ItemArmor. Register them normally. And in the class that extends ItemArmor add getArmorTexture and set the armor texture path as the return for each item you initialize to that class.
I believe he wants to know how to use the vanilla model, but apply his own texture if not that is how you would go about doing that. But I believe there is a method called getArmorTexture in Item.