Managed to figure it out! Partly thanks to the answer provided by Pavan Bhadaja, followed by playing with the drivers and rotations in more depth.
The issue I was running into is that Nishita sky is programmed so the sun elevation angle doesn't warp around: Only values between -90* and 90* are valid, meaning an empty spinning all the way around won't work as values like 270 cap the sun. I was looking at complex driver formulas to warp / reverse the angles, yet it seems that wasn't needed: The sun always rises and sets at an angle, thus you can define a virtual 180* cone for the sun to work in which can itself be pointed in any direction on the Z axis.
For my daytime cycle I parented the sun's empty to a clock empty: The clock spins in one direction, you can animate the cycle by infinitely increasing its Y rotation over time, and you can give it any Z rotation to point the sun cycle at your desired location. The sun empty has a fixed rotation in the X axis to specify the sun's height at midday (max 90*), the higher this angle the further from the horizon and higher into the sky the sun travels each cycle.
In the image below the circle is the clock and the large cone is the sun. A smaller cone represents the moon, it will use a second Nishita sky blended on top at lower intensity, which will work the same way just parented at an opposing angle from the sun on the clock.
The drivers are a bit tricky. First you simply use the X rotation of the sun empty as the Sun Elevation value, the -Z rotation as the Sun Rotation value (Z must be negative or the sun goes the other way around). You need to use world rotation for this to work, local or pose space ignore the empty when it's being rotated by its parent. Also very importantly, you must set the mode to "Swing and Y Twist" from the default "Auto Euler", "XYZ Euler" and other transform modes won't work this way! Do so on both drivers and that should be it: You should have a day / night cycle you can animate from the scene via one rotation value.