Sorry I'm not answering your question about why your portlet isn't working, but the "problem" with using a descriptive value (e.g. "full name") as a hidden key is that you are not following good data-modelling practice.
Consider if someone changes their name for whatever reason - then your data is broken; your object contains a reference to an old name, the resource record now no longer contains that name - things are broken.
Whereas if the hidden key had been made to an internal id or "code" (user id or resource id would typically be used), then these things don't tend to change and your data model can cope with people changing names etc. (This is "denormalisailing" the data if you want to read more on it).
and I can't help thinking that your portlet/loookup problems are somewhat related to your "bad" data model though.