Loading menu on basis of user profile
The primary way to control visibility is through block visibility conditions.

There is no default condition available for what you are trying to achieve, so you have to implement your own.

See \Drupal\user\Plugin\Condition\UserRole, that does visibility based on the user role, what you want would be fairly similar, visibility based on a field, so like any other plugin, you can copy that into your module into the plugin namespace (\Drual\yourmodule\Plugin\Condition) and then adjust it to check the field instead and also offer the same select.

Then you place two blocks in the same region, each with a visibility configuration using your plugin. You need to think about what should happen when a user is not logged in, so maybe you have a default or hide both for anon users/users without a selection.