Here’s how I would handle this:
In your Member Directories edit your default directory, and make sure that your legacy private role is de-selected from the list of roles to show in the directory at the top. Also make sure it’s not selected in any of the other directories if you have them (unless you have one that only the admins can view, then leave it in that one. ?? )
In the Forms, make sure none of the Profile forms apply to that role. When editing the form, on the right-hand side, change the “Customize Form” option to “Yes”. The first item in the customization is “make this form role-specific”, which probably has either all or none of the roles selected in it. If it has all of them selected, then de-select your legacy private role. If it had none of them, then select everything except your legacy private role. Then save it.
At this point, you now have your legacy private role set so nobody can view profiles in it. If you want people in that role to be able to opt into being visible, I would either create a new role for them or pick one of your other roles to let them move to, and then create a new Profile form specific to the legacy role (perhaps by cloning the default one to start from) and then add a Role selector to their form that lets them change between the legacy role and the one that makes them visible. Probably add a Content Block right above it to explain that if they choose the other role, their profile will become visible to other members.
There may be other ways to pull off what you’re asking, but that’s the first thing I could think of that would accomplish it.