Unfortunately, after working on it, the problem is much more embedded in Unity's mechanics than I thought.
The optimization consists in no longer reading effects “in a straight line”, one by one, but in reading them together, on several processor cores. Unfortunately, many Unity methods are not compatible with this.
This game has evolved a lot since I started programming it, and the initial system is too intertwined with Unity's main mechanics, so I'm going to have to abandon the character loop optimization, and go back to the old version, or else it would mean I would have to redo all the game, which I'm already doing a little as we're working on a 2D optimized version of it.