A lentidão é provavelmente causada por operações matemáticas e não pela busca de dados da tabela. Parte de seus critérios não é contra campos de registro, mas contra o resultado da operação matemática em outros registros, de modo que está se tornando um O(N).
A razão pela qual o Postgres não usa um índice e escolhe Seq scan é porque ele decide que a maioria dos registros da tabela terá que ser buscada durante a consulta. Quando a maioria dos registros na tabela deve ser buscada, os índices podem não trazer muitos benefícios, se houver.
Para acelerar as coisas, você deve considerar o uso de índices espaciais e pesquisa baseada em vizinhança de PostGis ou, alternativamente, Elasticsearch com Consulta de distância geográfica .