There are many good ideas here. Try some of them. But keep this in the back of your mind:
Management cannot create a team. A coach cannot create a team. Only the team can create itself. What you can do is to provide resources, information and opportunities. Let them know what a true team is like. Give them the chance to be together. Help solve problems. The group may decide to become a team - in fact it's very likely if the conditions are right.
People are designed to work on teams. One just has to let them discover that fact.
Yes, the Socratic approach to learning can be great. At my office, I'm currently leading live TDD work sessions I've titled "Stump the Chump", emulating a technique my grad school mentor's mentor (my grand-mentor? :) ) used in teaching mathematical physics: show up to class and just try to work a problem, showing how it goes in real life rather than a prepared/rigged demo, complete with throw-it-all-away mistakes and all other sorts of warts. The idea is both to show that it works and to show how to succeed despite problems. In the process, even though I've done TDD for years, I too am learning things about both TDD and how to teach it.
If you have the time, and can't find local coaches, assigning one member of your team to teach a session, and then rotating , could also help.? I find teaching is often a great way to learn, and also helps build "buy in" to the cultural changes needed.
Not sure where you are located, but it might be worth looking into what local resources are available.
Is there a Scrum or Agile Meetup (or Users Group)?? If so, encourage your coworkers to attend when they can.? There could be local experts who would be able to do some dojos or presentations for much less expense than a full-time coach.