I would guess that part of the problem is playonline's netcode using a proprietary protocol instead of http(s).
Switching downloads to http(s) would make it way easier to integrate third-party cdn's to the download process.