Going back to BuddyForms, you can use a custom form to override the BP membership profile form.
Have a look at this also from BuddyDev:
Buddy Blog Pro
Something around programaticaly using BP hooks might be useful:
The author of BuddyDev Brajesh Singh seems to be the BuddyPress guru!
This would be very useful indeed.
What you really want is for a form to insert values directly into BuddyPress xProfile fields. Then you could create WP custom post types which integrate with BP, which would be fab!
BuddyForms Pro has an option to include BP xProfile fields in a form, and as far as I can see is the only form plugin that does so.
However, I have found BuddyForms to be buggy and I cannot implement.
Considering the BuddyPress popularity, I am surprised there is not more (any!) support for this.
BuddyDev has plugins which extend BP xProfile fields and even synchronise BP member types to WP user roles, which is a step in the right direction.
Also, you can use eg. JetEngine to allow element visibility to certain roles, but that is a work-around.
There is probably a way to do it with JE custom queries but that looks like a horrible learning curve!