Faces messages are indeed request scoped.
Just make use of the new JSF 2.0 Flash scope: Flash#setKeepMessages():
context.addMessage(clientId, message);
context.getExternalContext().getFlash().setKeepMessages(true);
// ...
This has only one caveat in the current Mojarra 2.1.13 release: the redirect has to take place in the same "folder" in the URL. This is fixed in the shortly upcoming 2.1.14. See also issue 2136.