Yo me he encontrado con este problema en C# e imagino que será lo mismo.
Con el .ToList() que menciona Leandro fuerzas a ejecutar un primera query teniendo así una conexión extra a base de datos.
La solución que encontre es pasar como parametro una variable con el calculo ya hecho en memoria, en tu caso quieres sumarle al campo de base de datos, pero es lo mismo restar 3 al Now.Date(), y quedaria así
var miVariableDeFecha=Now.Date().AddDays(-3)
...
Where consulta4.fecha.tipo_fecha = 5 And consulta4.fecha.fecha.Value.Date <= miVariableDeFecha
...
Pruebalo, pero creo que hará lo mismo que lo que esperas.
Vota mi respuesta si te ha sido útil. Gracias.