Oscar, I think you can use bootprelay with more DHCP servers, with additional config on server: agent.circuit-id, agent.remote-id, class, allow members of ... and so on.
It will respond only to configured "class members".
In early days UDP helper was the only method to be able to distinguish between vlans and DHCP servers.
Nowadays you can enable bootprelay per vlan so you can use bootprelay without enabling it for all vlans. Still I think if you need different DHCP servers for different vlans UDP profile is the only config possible.