Sharing weapons across different characters is not a problem. Different skeletons can share atlases.
But if you don't want to have to update the skeleton every time you add a new weapon, the runtime-defined attachments make sense.
If you're on the latest spine-unity, import the unitypackage examples and check the Example scene named "Mix and Match". Read the text and check out the sample code in MixAndMatch.cs.
That will show you how to use the AttachmentTools methods to create, duplicate and/or remap the textures of existing attachments. Your attachment image source can be sprites, textures or Spine atlases.
Make sure you animate with skin placeholders in Spine editor, and use skins at runtime. At runtime, you can change what those attachment names map to.