Different fields for different user types

Is it how you solved it?

Yes

I’ve been thinking of using dynamic zones.

Me too, but IMO it comes with to many inconveniences (e.g. population) and opens doors for misuse.