The number of requests before the block is the useful clue here, and it splits your three options cleanly.
Getting flagged within a handful of requests is almost never pacing. Rate problems show up gradually, after a few hundred requests, and they arrive as soft throttling rather than an instant block. Being burned that early points at the transport and browser layer, which is also why clean residential addresses don't save you.
A cheap way to separate them: pull the same page through the same proxy twice, once with a plain client and once with your headless browser. If the plain one sails through and the headless one gets caught, it's the browser signals. If both get caught at the same point, it's the fingerprint sitting underneath, and no amount of user agent work will fix that.
One thing that quietly causes this on its own: rotating the address on every request. A real visitor keeps the same one for a whole session, so per request rotation reads as automation even when everything else is clean.
Best,
Floqal