There is no means to have different sets of custom fields for different types of users. You might be able to hide them with CSS, but how to let a user select which type of account it is might be tricky.
No. A wild guess is $250-$1000, depending on how much you want things to be exactly the same as they were before. For example, there is Discourse Calendar, which might be how users could publish their availability rather than having it be in their profile. So there could be some ways to solve the same problem, but it’d be very different from how it’s working now. This will make some of your users sad because change is hard.