After some time has passed by, I'm thinking differently about this one as well.
This is my current take at this problem:
1) go with Adam's suggestion of using a custom VariableResolver which adds a new implicit object (let's call it myfacesContext), add an attribute storedComponentClientId to this implicit object.
2) create a new component which does nothing but setting the parent-client-id into this myfacesContext, e.g.: <t:storeParentComponentClientId param="#
where param is optional (by default, it's set to where the example points, you can change this to somewhere else if need be).
3) now you can use this stored-client-id in your el-expressions, and do a lot more than what ifMessage would provide.