Re: listing members
You can do this by writing your own custom profile loops: https://codex.buddypress.org/developer-docs/custom-buddypress-loops/the-members-loop/
You could incorporate a search term to filter each loop, but I suspect you are better to have a field in the profile for venues, djs and promoters, and query that field during the loop.
For each type of member, it might be an idea to have different profile field groups, and hide them when they are not appropriate.