Personal thoughts of difficulty levers:
If I were you I’d stay out of the food source classes. Not only are they brittle and hard to test…
Wait, what’s that?
It’s a bird!
It’s a plane!
It’s Hhyyrylainen wishing that someone would implement an auto-evo-exploring tool!
…sorry, got distracted. Anyway, not only that, but those heuristics for fitness are both used to judge the player and the NPC species, so anything that makes it easier or harder for the AI to be big and fierce will do the same thing for the player. You could try to make it more exacting, but that wouldn’t be much of gameplay, it would just pigeonhole the player into a more specific bodyplan.
The mutation code, however, might be more promising. We have some constants that govern how big AI species get, and how fast. This is still naturally selected by the food sources, but I imagine pumping those numbers up or down would make the player feel “out-evolved” to a different degree.
I’d lean more towards changing use of compounds over spawning of compounds. Particularly on hard mode, the game just not giving you phosphate isn’t challenging, it’s punishing. In the difficulty PR I abandonded I focused on the rate of ATP consumption. That forces more pressure on the player, but still gives the same opportunities.
I’d add player HP to your list. Messing with other microbes’ HP runs a risk of serious bullet sponging on hard (some species are already really tough to kill without cheesing a pilus), but Thrive would be very different if a spinning pilus wasn’t a one-hit kill, or if a single toxin shot was.
I’d also take a look at messing with the velocity of toxin particles. Watching other people play, I’ve noticed that the scariest part of most people’s games are when a big linage of toxin-shooters emerge, and the game turns into a bullet hell. Giving players more or less time to react to just that one scenario might do a lot for player perception.