using posts_where for meta data on pre_get_posts

I doubt that ever worked by itself. WP_Query operates on posts database table. On the bottom SQL level to make use of post metadata you need to not only say what metadata you are looking for, but also instruct MySQL how metadata table connects to your posts table (JOIN realm).

I would attempt to keep manipulating query arguments for starters, it doesn’t seem like your conditions are that complicated (from what you quoted at least).

PS also don’t forget to remove your filters after, or you are messing up other queries.