We kept hold of Lukaku when he had longer left on his contract. When it gets down to 2 or less years it starts to become a worry for the club. In the case of Van Dijk and Coutinho, both have recently signed long term contracts putting a significant amount of power back in to their clubs hands. However, as soon as these players show a real intent to move on to a better proposition, it's just a matter of time before they are sold and there is a hierarchy in football with Real Madrid and Barcelona at the top. Even Barcelona couldn't prevent Neymar from leaving as the offer was too good. That's why we ended up selling Stones when we did, it's why Swansea sold Sigurdsson and why Van Dijk, Sanchez and Coutinho won't be at their current clubs in 2 years time.
People have mentioned the point about Barkley being all but sold. The news coming out from Arsenal/Man City is that the same happened with Sanchez. The deal only didn't happen because Lemar didn't fancy Arsenal.
Man United couldn't prevent Ronaldo from leaving, Liverpool with Suarez and Tottenham with Bale. We held firm with Stones for a year longer and we persuaded Lukaku to stay through 2 years of awful football and midtable mediocrity. It was inevitable that the 2nd highest scorer in the Premier League (3rd the season before) wanted to move on, and we got good money for him. Moshiri can't be blamed for failures that lead to our best players wanting to leave in 2 seasons of mediocrity with no progression when he wasn't even at the club.