In short, automatically DELAY posting to Facebook. Let everybody know at the bottom of all content: This was published first at example.com and released to social media (Facebook) after X hours.
Make Facebook look antiquated like a newspaper. Let everyone know, Facebook is the old news. If you want our latest news, you have to sign up for the email list--you must to go to example.com for the LATEST news.
One way I'm thinking this could work with a WordPress plugin, when the publisher schedules a post, the post would be "locked" from view with a countdown timer. "This content unlocks in 6 hours. To unlock this content now, and to get our content before everyone else, sign up for our email list."
Maybe for really time-sensitive info you could have three tiers. A paid tier (instant release) and a free tier (unlocked 1 hour later) and a social media tier (unlocked 6 hours later.)
Essentially, you're taking advantage of the value of time, automatically. For example, if shampoo is on sale and you're 1 hour late, maybe the shelf is cleared out.
But you don't necessarily need a paid tier, because the publisher is a) getting more traffic to example.com, pulling traffic off Facebook and b) getting more email subscribers.
Publishers do implement this on their own, but I think it would work well as a WordPress plugin or as some kind of paid service if it was slick enough.