The programmer is probably ok if all you want to do is solve the immediate problem. The simplest fix is to just set it to not demand CH and DHW at the same time.
However it would be worth finding out why the DHW zone valve is not closing when the cylinder is up to temp. This could be as simple as the cylinder stat is set higher than the flow temp on the boiler, so the cylinder will never get hot enough to cause its stat to stop calling for heat. Alternatively there could be a wiring fault. Assuming your wiring is similar to :
Split temp is also easy with your boiler as it has separate water temp controls for CH and DHW, and also separate inputs to allow you to trigger it for CH or DHW. Hence it "knows" what it is heating, and and can run the required temperature. So the only change required would be separating those call for heat signals derived from the zone valves and bringing them to the boiler separately rather than combining them into one generic call for heat.
To go full weather compensation then you would probably want one for the Vaillant weather compensating controls like the VRC 700 or VR 470, and a wiring centre like the VR66 or 71. That then makes the communication between the boiler and the stat and the wiring centre an ebus connection
- so it can now pass detailed info back and fourth (and the "stat" becomes a much more accessible place to configure and access the boilers many options).
The stat also replaces the timer/programmer,
You also have an external stat (just a NTC thermocouple in a box) that is wired back to the boiler. The weather compensator can read the external temp from the boiler, it also knows what the set point temp is as well as the actual temp, and can then decide what flow temp is required. Once it knows all this it can command the boiler to fire and run at an appropriate temperature.