Different profile based on membership selection
I recommend taking a look at the Caldera Forms CiviCRM plugin. This will allow you to use conditions within a caldera form to show and hide fields (and make them required) based on the type of membership selected. The plugin contains multiple processors to allow you to add contacts, memberships, etc. in CiviCRM.

The plugin is available in the WordPress repository. Here is a link to the plugin info: https://github.com/mecachisenros/cf-civicrm