Have the Unread by similar to the Unread messages type thing in the threads however move the unread statement to the message list where all the messages are displayed and if one user has not read a message then have it say unread by that user no matter what message was not read.
Ok say users is 5 in the message thread and user 3 didn't read message 8 of 10 messages or replies then in the database have it a 1 for unread and have it display "Unread by user 3". Now if everyone read the message then "Unread by none".
Perhaps you can use the same method as you use in the poll system to tally who voted for what. When someone opts out or removes themselves from the topic then have the database remove it from the tally. This would still send the message that they removed them selves from the topic as normal in the thread of the private message.
Whats another little database section in the database anyway. There is a few dozen of them in there now and I dont think it would have any more strain on the system then what is all ready on it now anyway.