I was thinking of soldering the parts on the same board.
Your choice. On the plus side it avoids some wires/sockets. On the minus side it's not so 'modular'; hence less future-proof.
Here's a rough idea of the board space needed
per pump for the Pulse Width Section (PWS) for speed control:-
View attachment 66178
And here's the latest incarnation of the full Speed Module Mark 1 (SM_1). Note that it is made up of four PWS (only one shown, together with part of a PDM to show how they interconnect) plus one Speed Set Section (SSS):-
View attachment 66179
Circuit explanation
At each commutation the current through the pump motor briefly drops, so Isense goes low. This triggers a monostable circuit made up of op-amps U1a, U1b (acting as comparators), C2, R3.
C2 voltage initially jumps high, 'SpeedCon' goes low and FET M1 turns off completely; so the motor current is now zero. C2 voltage then drops back. When it drops below the 'spd' voltage the output of U1b goes high and M1 turns on.
Thus the start of each current pulse through the motor coils is delayed by the monostable period. The result is reduced average coil current, reduced average voltage across the pump, and reduced motor speed.
The 'spd' voltage is set in the SSS.
When 'Fast' is connected to +12V the 'SetMaxSpeed' trimmer, in conjunction with R8, allows the average voltage across the pump to be set up at 18V (i.e. the average used in the OEM controller and therefore deemed safe for long-term reliability).
When 'Fast' is connected to ground the 'SetMinSpeed' pot allows a suitable low speed to be set up.
The 'Fast' input can be controlled by a mechanical switch, by a logic circuit or by a PWM waveform.
Since the LM324 is a quad op-amp package it can be shared by two PWS if you like.
Observation
In designing this module I searched the web for speed control techniques for BLDC motors but didn't come across
anything using the method proposed here. The published methods (other than the OEM method of reducing the DC voltage supply to the motor) all seem to involve greater complexity, e.g. using a micro with indirect (back-EMF or optical) detection of rotor position, or using a dedicated many-pin IC with direct access to the coils. So I think this method may be of general interest and I'll submit it in modified form as an Article.
Edit:
BTW I've tried the circuit with two differently-rated BLDC motors (albeit not as powerful as a pump motor) and both could be smoothly controlled down to low revs. As this method reduces the average motor current, not instantaneous current, there is still good torque and consistent starting even at low speed.