I have a larger frame bike so I use a Bell Clinch 600 (US$10) mount with a cheap metal cage (US$6) to put a water bottle (25oz) on the bottom of my top tube and wedge it forward so that the nozzle of the bottle is nearly at the front of the frame to prevent it from bouncing out. Unless I'm riding over some serious potholes on a fast downhill the bottles I put there don't move. The rubber grip works well when tightened down and I very rarely have to adjust anything. Maybe every once in a while give the mount a slight nudge forward by 5mm or so but that is it.
Alternatively when I've loaded up with water like crazy I also mount 2 Bushwhacker Shasta Black - Insulated Bike Water Bottle Holders (US$13) on my handlebars. They comfortably hold a 1 Liter soda/seltzer bottle. I imagine a taller 1.5L bottle could fit in there just fine.
In terms of brute water bottle carriage the pouches are probably the better bet.
https://www.academy.com/shop/pdp/bell-clinch-600-bottle-cage#repChildCatid=1478509
https://www.amazon.com/gp/product/B00724OR4M/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1