You're right! There isn't really any semantic difference, they're functionally equivalent. What's more, they're both etymologically from Germanic.
The difference is purely idiomatic and something you'll have to memorize, I'm afraid. Unfortunately, -hood and -ship aren't interchangeable. You would sound very silly saying brothership or friendhood.
It's very uncommon to join -hood or -ship to arbitrary words, you only typically use these suffixes when they're part of a well-known word: knighthood, womanhood, manhood, friendship, relationship, entrepreneurship, etc. I would go so far as to call this a rule. Whatever you're trying to express with -hood or -ship can be expressed as another word (e.g., "union" instead of "workerhood") or a phrase (e.g., "old age" instead of "eldership").
The one exception is if you're trying to be clever, like in an advertising campaign, or achieve comedic effect. Sometimes you might see someone bending or breaking the rule, especially when combining these suffixes with slang, to make up something like broship (i.e., the condition of being a good male friend/mate to your fellow male) or newbiehood (i.e., the status of being a novice).
(Some made up -hood and -ship words will be more intelligible than others, but it has nothing to do with any logic behind -hood or -ship. Rather, it has to do with understanding humor in English. I would wager that any native American English speaker under the age of 40 would understand broship or newbiehood even though I just made those up because they sound funny to the American ear and carry a certain cultural resonance. Something random like tablehood or streetship would just elicit blank stares.)