How exactly do solar panels work?

AFAIK servos are locked when not powered. I would try this:
Use transistors to cut power to the servos and everything that eats power except for Arduino. The default state should be off. When there is enough power to power up the Arduino it checks which way to move the panel and tries to power up one servo to move it to better position. It may cause a brown out but it does not matter if it moved at least a bit. Next time there will be slightly more energy in the filtering caps and the panels will provide a slightly more power - your next step will be slightly longer. This way it will get to a suitable position. When the position is optimal try to turn on the fan.

I don't think the repeated brownouts may damage something but maybe it can cause vibrations when the servo repeatedly tries to move and fails due to a reset. Probably you can add some "long" (10 seconds? one minute?) timeout after a brownout reset to prevent possible mechanical wear. (And reduce ugly twitching.)