I like the idea of it being a reward from battling more because it's what the OG games did. They just had NPCs you had to fight for it.
How about an item. The recipe isn't too expensive, but also takes a little bit of investment for finding let's say diamonds. Once crafted, it's a generic item (remember the generic Bottle Cap you fish up?), that you then have to charge by beating up wild Pokémon above a certain level. Once it's charged, you can craft it with an apricorn of the right type (eh, Bottle Cap logic worked fine), to get the one you want. Maybe there's also a way to craft it back into the generic, uncharged (partially charged?) one.
I like the idea of it being a reward from battling more because it's what the OG games did. They just had NPCs you had to fight for it. How about an item. The recipe isn't too expensive, but also takes a little bit of investment for finding let's say diamonds. Once crafted, it's a generic item (remember the generic Bottle Cap you fish up?), that you then have to charge by beating up wild Pokémon above a certain level. Once it's charged, you can craft it with an apricorn of the right type (eh, Bottle Cap logic worked fine), to get the one you want. Maybe there's also a way to craft it back into the generic, uncharged (partially charged?) one.