My problem seems to have sorted itself out as of this evening. I am speculating that the problem was related to Apple's iMessage service being overwhelmed with the release of iOS5 and the sheer number of people trying to register and set up iMessage accounts. Admittedly, that is pure speculation. That said, iMessage can still be confusing because the Caller ID setting seems to be no more than a default setting for "new" messages (NOT sent in reply to an existing thread). From what I can tell based on lots of trials, if someone messages your phone number, your reply will be from your phone number. If they message your email address, your reply message will be sent from your email address.
Threads are created for each person you are messaging, and that is based on the caller ID of the other person. So if "Joe" sends you some messages from his phone number and some from his email address, they will appear in two different threads (both labeled "Joe", assuming his phone number and email are both in your contact info for him). The app sees two different incoming IDs and treats them as two different people even if your contacts data knows they are the same.
To add to the confusion, if "Joe" always sends to your phone number (even though he sends from two different caller IDs), all of the messages will appear in a single thread for him on his device. That's because the ID of the other person (from Joe's perspective -- you) is always the same.
It would be nice if the Messages app could consolidate all of those messages into a single thread based on how the iMessage accounts are registered (associated phone numbers and email addresses for individual users) but for now at least it doesn't seem to do that.