If each hat actually moves differently, you could have one bone for each hat, and animate all those bones (effectively, animate all variations of the movement) of them per animation in the same animation. Then you can have skins specify which hat is visible at any time.
If most hats share movements, those hats that share the movement could share the same bone.
So, say, if you just categorized your hats into medium, light and heavy hats, you only need to animate 3 extra bones in all the animations. The three extra bones would then define the movement for the three kinds of hats. Then you could put the hats into skins that go into slots under the correct bones.
This is a bit wasteful (arguably insignificantly wasteful). But the alternative (making separate animations just for the hats) is more complicated to implement and animate right now, since the editor doesn't support simultaneous playback for multiple animations yet.