-er is the agent suffix in English. Effectively it turns words into those who do something related to that word.
Hawk > Hawker = One who "hawks"
Run > Runner = One who "runs"
In principle this implies the existance of a verbal form of the root word, such as the two above examples.
Witcher, as used by the fantasy series, is a weird one because it's actually not related to the agent suffix.
The Polish title of The Witcher is Wiedźma which just means "witch". When it was translated to English they adopted "witcher" as a masculine form to the oft feminine "witch" by using the ability for the -er suffix to indicate a profession or association with a noun in English i.e. Cash > Cashier, someone who handles cash/payments (actually derived from french with the -ier suffix, but point still stands). In the cass of Witcher it is one who works as/with witches or else one who is associated with Witches.
Which is a completely different word... People used "hawk" for selling because, well people don't always know what they're doing. But language evolves. Use "literally" to mean "figuratively" enough, and dictionaries start listing that as an option.
Because dictionaries aren't to teach people how to speak, they're for people trying to understand what someone else said.