Well, there's PeerTube, which is federated. I guess it's not decentralized, but there's no single central server, so it probably meets your requirements.
It can be solved. For example: assign peers for videos with lower number of peers instead of assigning peers for currently watching video. Please correct me, if I’m wrong.