I don't know that benchings or scratches are going to work with a guy like this. He doesn't care. Not about the team, not about the coach, or even about playing hockey all that much. That said, you say he's your friend and you've known this guy 17 years. So maybe he gives a crap about you.
That said, I'd approach him like a friend. Explain to him that his actions are reflecting on you as a captain and that you're going to lose your captaincy over this. May or may not be true that you would lose captaincy, but claim it anyway. Tell him that being captain means a lot to you and explain that what he's doing is going to affect you badly. Maybe even tell him the league wanted to expel him and you promised that you'd rein him in, and now your neck's on the line with the league as well -- i.e. because you vouched for him, if he keeps acting up, you're both expelled. Ask him to tone things down as a favor for you. If he has any respect for you, he will. If he doesn't, hate to break it to you, but he's not really your friend, and you should take your friendship elsewhere. Maybe losing your friendship will make him want to regain it enough that he changes.
I would also play to his ego, as that's the only other thing that seems to matter to him. Explain to him that the team needs him, and can't afford having him suspended so often for stupid crap. You need him on the ice, not in the pressbox, because well, he's your best player.
If none of that works, then get him off the team. Scratch him nightly until he shows he can quit being an idiot. If he never does, you're better off without him or without his friendship.