I don't intend to win bounty but here are some strategies that I have used and were well received:
Extracting informatin from sub-components and mapping them to functional units helped our business analysts and end-users to understand the errors better
Assigning a business priority level will help depending upon the domain you are operating.
A Seperate Error Viewer App helped us view the errors before they were reported so my teams can start fixing them.
System level exceptions are better when they are not messed with.
Async logging of errors will help a great deal in the overall strategy and design.
Create Domain-driven error strategy: meaning the errors whould correspond to failure of some business logic. Of course, most should be handled by developers, but there are certain scenarios that you may run into if you are working on message routing between various enterprises in trading engines, etc