I hear native German speakers respond to a danke with bitte as often as with gerne.
Is there a semantic difference between the two of them? Or a usage rule behind the choice? Is one more polite than the other?
"Bitte" is the "standard" answer to "Danke".
"Gerne" is short for "Gern geschehen!". According to the Duden, "gern" means
mit freudiger Bereitwilligkeit, Vergnügen
It therefore implies that the speaker was happy to help or do a favor ... and it all sounds more polite.
With a quick search I found this (it's a bit tongue in cheek, but he's quite well known as a linguist): http://bastiansick.de/kolumnen/fragen-an-den-zwiebelfisch/bitte-danke-bitte
The author argues that "Bitte" is short for "Ich bitte Sie, das war doch selbstverständlich!" or similar sentences (maybe "Oh please, that was nothing!" in English). Here, you do not accept the gratitude, in your view you did nothing that would require it.
Answering with "Gerne" is noted as a new trend, mainly because people didn't understand the first option anymore. There you accept the gratitude, but express that you liked to do the action, so it was no problem for you.
So in conclusion, "Bitte" may be a bit more old-fashioned, but also more polite in theory.
"Bitte" corresponds to the English "You're welcome."
"Gerne" is more like "My pleasure."
The implication of the first set is, "Ok. here's what's yours."
The implication of the second set is, the doer feels that the asker is doing a favor, something "A to A" on Ouora.
For most people, bitte and gerne are almost entirely exchangeable when they are used as a response to danke. If anything, I would perceive gerne as slightly more polite/formal and therefore would tend to use it less with family or close friends. But that’s more of a very vage tendency.