The problem is every club will have players like this, Pogba with Man Utd being the biggest example.
Off the top of my head down the years we've had: Nabi, Mkindawire, Gayle, Worrall, Nicholson, Hodgkiss, Hurst etc.
All these guys at some point were tipped to play for us etc, there's probably more. The issue is that when you're in the Premier League, it's too risky to play them so you need to loan them. But these days they may force a move by wanting ridiculous wages, and realistically you may have to loan them for 3+ seasons. In that time, their contract may run out, they may force a move etc.
So, it's not that easy as simply holding on to guys like Roofe. For the record, I think we did quite well with the development of Chris Wood - we loaned him out for years, also playing him quite a lot in the Championship. The truth is, he didn't look up to it - so he went and now he is a very good player. But what can you do in that situation?
With Roofe, I think it wouldn't have hurt to try loaning him for a few more seasons, but it may have ended up like Wood, which isn't as simple as holding on to talent.
Re-reading this thread, I actually think buy-back clauses are the way to go. I don't know why we don't do it more often.