Bounces only seem to match if the 'in reply to' header indicating the source message id is included in the bounce message. However, not all email servers include that in their bounce replies.
Instead, or at least in the event that the "In Reply To" header is not present, which is likely as a bounce is not technically a reply, you should leverage a regex against the incoming bounce message to find the appropriate contact email that bounce is associated with.
For instance:
/Original-Recipient: .
;\s?(.
)$/gm
This will pluck the relevant original recipient email from the body of the bounce message, and can then be used to mark that email as a bounce.
Obviously this would not indicate which campaign triggered it, but it ought to be fairly trivial to find that contact _anywhere_ it's used and mark it as a bounce.