I have a 12k milemarker, and while slow it seems to work well. Mine is plumbed to run off the powersteering pump, which is why it's so slow.
I would not expect to need anything over about 10 GPM for a typical winch - 30 is quite excessive IMHO. A 30 gpm pump would be quite large, as would the hoses, tank, lines, etc., not to mention the PTO. The 20-30k winches you mention are far too large for a pickup - those are sized for a semi or big wrecker. Heavy, cumbersome, large pain wire rope, etc. Probably just the static weight of the winch alone would be ******* the pickup frame, and anywhere near max capacity would probably pull the frame apart. I would spec something around 15k.
Using a 15k Warn
https://www.warn.com/series-15-hydraulic-winch-15000-lb-65931 for example, 10 gpm gives you 13-18 ft/min (depending on layer) and 15 is 19-27. For comparison, a random electric 12k is 30 ft/min unloaded and only 3.8 ft/min at max load.
https://www.warn.com/m12-12v-heavyweight-winch-17801
I would spec the pump to deliver 1/3 - 1/2 or so of rated max flow at idle - that is, ~5-8 gpm for the above winch. With a hydraulic winch you can always rev up the engine and get increased flow. If you spec 5 gpm at idle (650 rpm IIRC), you'll get ~8 at 1000, 10 @ 1300 & 15 @ 1900 rpm. Specing a slight bigger pump brings those numbers down, but you also have to be careful to not over rev and exceed flow ratings. The big reason IMHO for doing this is controllability. Unless you have a hand valve, the winch control is a binary switch - on/off, and when on you almost instantly have it spinning at the given speed for the flow rate, and beyond that there's very little 'loading up' where the speed drops off under load as you see on an electric. So, if you spec it for max flow at idle you have no easy way to run the winch at any speed other than max, which is very likely much too fast for many situations. Specing for a lower flow allows you to have a slower more controlled winch speed at idle, and then you can increase winch speed by 2-3x with engine throttle.
Also, the pump flow rate is proportional to the torque, which means shafting/pto spec and engine load - as discussed earlier, 30 gpm at max pressure is ~50 hp, which is a considerably amount to get out a light duty pto/trans and idi at low rpm.
A 30 gpm system probably needs a 20+ gallon tank and a good sized cooler as well, with 1" pressure hose and 1-1/2 - 2" suction and fittings to match. None of that is easy to fit on a pickup. 10-15 gpm brings that down quite a bit, though still a challenge to mount.
Keep in mind that you really need the tank to be above the pump, or at least fluid level therein to be, and ideally well above. Where are you going to mount a tank? Putting it in the bed is about the only practical option, but then a belt drive pump needs to be located low and has a longer than desirable suction line. I have thought about relocating the batteries to the frame and putting a hydraulic tank on the fender liner on one side (probably passenger) but it hasn't gone any further than thinking about it. Lots of moving parts there.
Specing a PTO is complex, and even within the same PTO model there's numerous options for shaft, rotation direction, gear ratio, trans fit, etc. On the ZF trans, IIRC there's even different PTOs for wide vs narrow, and the S5-42 and S5-47 are different as well. Point being, unless you find a complete used setup (trans/pto/pump) and know how it's speced be very careful trying to get a used PTO, and don't count on finding one that will work used. Buying a new one is certainly an option, but not cheap. Running a belt drive is easier in this respect, though figuring out how to mount it and runs the belt(s) on the idi is a difficult as well.