We did the dogs trust adult dog training course, which definitely helped (and it doesn't matter if you got your dog from a breeder or a rescue). They have training sessions at lots of venues other than their rehoming centres too. Google 'dogs trust dog school' and look for your closest training venue. The way they are set up helps dogs learn to not bother about other dogs being nearby. They also had 3 trainers for a 6 dog class, so lots of 1-1 support available during class.
Definitely don't take away the training lead until you've got mostly there. Cavs are often so over-friendly they would follow someone home or still go up to a dog that will savage them.
The wait command actually started at home. I know when you tell them to sit or lie down, etc they are supposed to do it until you release but I couldn't get my Cav to understand that, so introduced wait command when he was doing that. Then it gradually came that I could say wait from across the room or garden and he'd just stop moving. So then I gradually taught it when out and about where it was quiet. Then gradually built up to doing it with more distractions.
Recall I found he wouldn't respond to an actual whistle (well he would until someone else had used one in the vicinity then it was back to square one) or to just a name call. I make a funny whistle noise myself and tap my hands on my legs, which has worked well from when I first tried it. Initially I let him off the lead in really quiet areas where I could see all around and recalled loads and he got a fuss and treat for coming back and an extra treat for the lead going on, which I often took straight back off (so he didn't associate it with the end of his fun). He has to remain sitting until I say he can go and I have a gesture for that too. Over time I gradually did this with dogs visible but very far away and very gradually built up until he was doing it with other dogs being closer and closer. The rest of his walk was fully on lead until I'd built up to him doing this with other dogs getting close by. For ages I still had to recall and put his lead on to actually pass a dog but over time he just got better and better.
At dogs trust training we also got leave it command working good - "leave it" should always mean a complete 'no don't go near that', "wait" is for 'not yet'. So if there is a dog or person I don't want him to approach at all I say "leave it" and he will. When I'm not sure about a dog I tell him to "wait" and check with owner - if they say it is ok for him to approach, he is told to "say hello", if not then to "leave it".
The close command is still a work in progress but getting pretty good now. I just keep dropping treats near me as I walk and saying close. - I'd say don't work on the close until you've got the other commands pretty much sorted.
I am fortunate to live where there are brilliant walks, so it's not been a problem to find large but quiet areas to practice in, which has helped. He also sees a lot of dogs on the other parts of his walks.
If at any point he stops listening properly he is recalled - so long as he comes back of his own accord he gets treated and released again. If not and I have to grab his harness he goes on short lead until he's walking nicely to heal (so I know his focus is back to listening to me), then he is released again.
Don't despair I seriously thought when my boy turned 1yr I'd never be able to let him off lead with another dog anywhere near him. But he matured a lot and with persistent training and dogs trust dogs school we are pretty much their now (except with polar bear friend).