This is a more complex solution that you are likely to see posted here, but the general ideas I can assist with.
For your pppoe user profile, set no limits on bandwidth.
Create a simple queue that matches your entire IP range (private if that is what you use) and match P2P as well, set the limit there. Alternatively, match P2P under “/ip firewall mangle” and set a packet mark for that, then another packet mark for everything else.
Set up your Queue Trees with the appropriate queues (I’d use pcq for this) to manage the bandwidth and provide the QOS (prioritization).