I think the trick here is going to be modulating rarity, spoilage, and encumbrance in order to achieve the right level of inconvenience while preventing obvious means of abuse.
Rarity: You're probably going to have to carefully consider the "available on the market" aspect here. It's a great way to separate the character from excess gold, but too much gold could lead to trash bags full of "rare" herbs. So the materials here will either need to be like endangered-species rare, or have something else about them that makes them rare. For example, mistletoe is a weed, it's everywhere--mistletoe harvested by moonlight with a golden sickle is not. A long ingredients list for each spell can accomplish the same thing, like when you go to the market and they have everything you need for your mom's spaghetti sauce recipe except parsley. I hate that.
Spoilage: I can't even keep salad in the fridge for more than a couple of weeks before it goes bad. This is a good way to limit the character's overall hoard of herbs. I think you'll have to allow the character to carry at least a couple weeks' supply of herbs, but you can further limit usage by requiring daily preparation. So your mandrake root will keep pretty well, but it's useless unless you grind it into a powder, and the powder will only last a day or so before losing its potency.
Encumbrance: I imagine we're trying to avoid the character dragging a trash bag full of leaves or carrying a bandolier of herb pouches. You might want to penalize the character for either behavior. If you think about it, carrying a ready supply of 20+ different herbs is going to be inconvenient. A bottle of 5-hour energy doesn't seem like much, but two dozen of them is certainly unwieldy if not heavy, and if you wade into melee with them they're likely to get broken. Similarly your druid spell probably requires an intact stick of mistletoe.
Lastly, I'll tell your GM to set the campaign in a desert or on board ship.