My iPhone show delivered for hours for a message, then shows read but read from hours before
A common cause for this is simply that the contact received the message, but didn't have enough signal (cell or WiFi connectivity, or phone in flight mode, or similar) to be able to send the read-receipt back. 

The read-receipt then comes through much later when the phone regains its connection with Apple's servers.