короче направление клевое, но изящно это сделать не получится - придется все экстеншны типа SingleOrDefault у себя перерелизовывать
нет, перереализовывать не надо, есть IQueryable & IQueryProvider которые "обходят" выражения и чё-то делают
просто тут либо можно врапнуть EF-овский квериэбл своим либо поискать можно ли инжектать свои визиторы в EF
на счет последнего - хз, точно видел статьи про фиксы EF-а на основе кастомных визиторов