Transistors are great at switching loads that are local, or at least close to the main system. Their weakness is that they must share a power / ground path between the load and system that drives the load, making the whole system vulnerable to a possible short or miswire in the field.
Transistors also don’t handle AC voltages so well. You may not care about this, but many sprinkler valve systems use 12V or 24V AC.
Relays provide isolation between the control and load. They can also handle higher currents than most transistors, and they work just fine with AC or DC allowing you the option to use a low-voltage transformer for the valve power.
The downside? Relays do need some current to actuate their coils. For this application, a small reed relay with a 500 ohm coil will do, so figure 10mA for the coil. Which, by the way, is an excellent use for a transistor: use one to boost your MCU’s current output to drive a coil. (Don’t forget the catch diode across the coil.)
Besides needing coil current, what’s another drawback for relays? They don’t handle PWM control. Your sprinkler valves don't care, but you will need PWM for fine control of the PV swivel motor.
So to answer your question, use both. Relays for your field loads (solenoid valves), and transistors to drive the relay coils from your GPIOs, and your swivel motor.
Let's talk about the valves. To run them off battery, you need the type called 'DC latching'. These operate at lower voltage and don't require hold current. Maybe this one or similar (9V DC.) The downside: you will need to drive that valve current in either direction, which means you will need 2 relays per valve. But, for your trouble there will be zero idle current in the valve and relays, whether the valve is on or off.
Related: How to trigger a latch solenoid valve from an Arduino?
Now, let's talk about that swivel motor. It needs fine control, and it needs to work in either direction. It will need an H bridge to drive it and two GPIOs: one for PWM, and one for direction control.
Also, you will need a stop switch for the swivel or some means to limit motor torque.
Not sure why you need a servo. At startup, you’d index the swivel to one extent, then hunt for the best PV output. I think you can get away from the CdS cells too, but you need to modify things so that you can monitor the PV array output.
There’s some more things that need to be sorted out, but a biggie is that you cannot connect the PV array directly in parallel with ordinary batteries like alkalines: the batteries will back-drive the PV array and fry it in short order. Add blocking diodes at least.
If you intend to use Li-ion batteries, that need for isolation goes double: you need a charge controller / battery protection circuit. You might be able to get away with using NiMH or NiCd in parallel, like many solar lights do, but you still need the blocking diode to prevent back-drive.
Some ideas about solar battery chargers for garden lights: https://circuitdigest.com/electronic-circuits/solar-powered-automatic-garden-lights
Finally, I’ll toss this out there: dual-axis solar tracker kit with Arduino. Has pretty much everything you need, and it's dual-axis so that it will have better battery life.