Had to work on such a slow loop in the past. We started with PID and failled to go with it.
Then we realized that knowing the flow was a major issue, and Added some formula to offset PID's setpoint correctly. We went through a tough comissionning, but ended well adding some weight factor on the formula setpoint with the real setpoint.
To start, as you know your flow, and your Customer likely know at constant flow how much acid is needed, start building some basic formula for acid ( acidDose = Flow * RawWaterPhError)
Note I use raw Water Ph, cause your middle probe is only usefull to limit the ph drop.
Once you get it stable (it should be easy), then slowly add some weigth to your PID, adding almost only integrative action (Proportional should be small in my mind),
PID role is just to correct the error using slow integrative action, while your formula should presets almost correctly the acid dosing.
so your loop should look like : formula * weigth + Setpoint * (1 - weight) -> PID setpoint -> PID -> PID output -> Dosing pump setpoint
Last but not least, make sure that the alkali probe is correctly setup (not too close from alkali injection point, and is sending some pretty stable signal).
And also have a look at how is builded the pump setup (big issues can comes from bad installation).
@Jairus : generaly, you need an agitator system and even some more time to the acid to properly diffuse in the water. Shortening the distance can be a big issue for the final probing.