Write a clean, well-tested function to parse and validate a stream of incoming transaction payloads, ensuring robust error handling for malformed data.
Implement parse_transaction_stream(payloads), where payloads is a list of JSON strings. Each valid payload must be an object containing a non-empty string transaction_id, a non-negative integer amount, and a three-letter uppercase currency; extra fields are allowed. Return valid decoded objects and indexed error messages while continuing after malformed payloads.
def parse_transaction_stream(payloads):