Let's consider that we have this scenario, if I have 2 users (Alex and Bob), and I have 1 Mbps dedicated for them, if I want to split bandwidth between them it will be by default 512 kbps for each one, but I need it to be a little bit smart, for example:
Alex is viewing youtube, and to view the video continuously using the current resolution he needs 700 kbps
at this moment bob is browsing a website requires only 150 kbps, so in that case Alex can use the unused bandwidth of Bob's share to reach the required 700 kbps, during that Bob start to stream a video on facebook and starts to consume 400 kbps, so Alex will be limited to 600 kbps.
As you can see, I want the bandwidth division dynamic and not depending on the protocols, so we make sure that we are utilizing the whole amount of the bandwidth without allowing any user to take from other user's share until it's unused.
I personally like HFSC. It won't scale to many users using it the way you want it, but it will work for a hand full. I think limiters can also do something of this, but I'm not familiar with them. I'm sure other people will give some other ideas.