Okay. I fixed the problem — at least so far.
Deleting the entry did nothing. I recreated the entry, it initially worked, and then failed five minutes later with the same problem.
On my iPhone, entries are "unified". For example, my wife has an entry for someone, and I have an entry for someone, it shows up on my iPhone as a single entry. On my iPad, these show up as multiple entries. If Facebook creates an entry, a third one shows up.
I want to my iPad, and there were three entries for this name — two had email and phone numbers and one did not.
Deleting that mysterious third entry worked for about two minutes, but it reappeared a minute later, and I had the same issue again. I ended up editing that third entry and added a phone number and email addresses. That allowed me to text John Smith through Siri. It so far has held for two days. I can once again text John Smith through Siri. However, other people who have Facebook profiles and are in my phone book aren't an issue. It was just this one.
Addendum
The problem was tracked down to Facebook being allowed to munge my address book. This user didn't have phone or email information in Facebook, so Siri must have seen the Facebook info, and tried to use that. On my iPhone, the contact entries are unified, so I see both what Facebook puts in and my entry.
Turning off Settings->Facebook->Contacts solved the issue.
There maybe similar issues with other contact applications like Twitter and Outlook which might cause Siri not to see the information you have for a contact. Turning off these app's ability to update your contacts may solve the issue.
Best Answer
It is not possible to pass variables to an App opened by Siri.
Since there is no predefined action available that opens a specific thread in the Messages App, it is not possible to create a shortcut that fits your request.