First off, you are mixing different context data...
Marketing Channel has a default 30 day attribution, Referring Domain is Visit level.
- User Clicks on Paid Social Link
- Visit A
- Marketing Channel = Paid Social
- Marketing Channel Instance triggered
- Referring Domain = social media site
- 3 Days Later, user comes to the site directly
- Visit B
- Marketing Channel = Paid Social
- Marketing Channel Instance not triggered
- Referring Domain = typed/bookmarked
- 2 Weeks Later, user comes to the site directly
- Visit C
- Marketing Channel = Paid Social
- Marketing Channel Instance not triggered
- Referring Domain = typed/bookmarked
- User Performs Search in Google
- Visit D
- Marketing Channel = Organic Search
- Marketing Channel Instance triggered
- Referring Domain = google.com
- 1 Day Later, user comes to the site directly
- Visit E
- Marketing Channel = Organic Search
- Marketing Channel Instance not triggered
- Referring Domain = typed/bookmarked
If you really need to see the "referrer" in conjunction with when the Marketing Channel was set, you might want to consider setting your Marketing Channel Detail value to "Referring Domain":
Then you can breakdown your Marketing Channel by Marketing Channel Detail (these will be in the same context / scope / attribution).
The other thing you can do here is to create a segment to use with the above where you look only at Referring Domains where there is a Marketing Channel Instance (this is an event which is tied to the actual setting of the Marketing Channel value.. )
Now, there could still be times when the referrer isn't available, due to how some Social Media App work, some of them may not set referrer headers... most do, but its not consistent... unfortunately, if the app isn't setting the data, there is nothing you can do...
But looking at the data comparing values with the same attribution will go a long way towards cleaner reporting / understanding of the information.