I've said this before, and I'll say it again: There is no silver bullet.
Using XML as both the input and output for your stored procedures is a silver bullet solution, and it proves one thing only: that one solution that might be a good choice in one instance is grossly inappropriate in many (likely the vast majority of) others.
Consider, if you will, a stored procedure that takes no parameters and returns a single scalar value. XML is clearly overkill in this scenario.
Consider also a stored procedure in which you pass a date range (two single date values) and return all rows from a set of joined tables that fall within that range. Encapsulating the dates in XML might not be overkill, but encapsulating the variable amount of data that you'll get back might be. You could get back zero rows. You could get back thousands of them.
Consider the case where the type of the data you get back from the stored procedure depends on the types and values of the arguments that you pass to it. Further, because the nature of the rowsets is fairly volatile, one or more of those rowsets might change down the road, requiring coding changes. Finally, you have a solution that might be amenable to XML.
So, should you penalize the entire codebase because a tiny subset of them suffer from mutability issues? Or should you design a solution that encapsulates those volatile datasets behind a properly designed facade that protects the rest of the system from that volatility?
What you will essentially find is that the silver bullet of XML Everywhere is not a silver bullet, but a nuclear warhead. When you wanted a solution that would strike a single target and solve your problem, what you'll end up with is something that will destroy everything in sight because you will have brought far more firepower to bear on the problem than you could reasonably handle. And then, as is typically the case, the weapon destroyed those who attempted to wield it.