The solution is simple and most countries already do this, with therefore little need for net neutrality legislation.
Make sure the last mile (and maybe the "outer backhaul") is available in the wholesale market - either from a government-controlled entity or by imposing rules on private incumbents. And, ensure this wholesale traffic is not prioritised except as nominated by the retailer using it (eg. classes of service).
Then, let the retail service providers compete with different offerings of free, subsidised or fully paid traffic. If a customer just wants unlimited cat videos - there's a plan for that. If they want a completely neutral service - somebody will offer that. If they want low latency and jitter for video along with bursty web browsing traffic - that can be done too. If they want a free walled garden with advertising - so be it. The pricing will reflect the costs.