La Pi no es realmente la mejor herramienta para el trabajo. Tiene un sistema operativo completo compitiendo por el tiempo de procesamiento, con muchos procesos ejecutándose al mismo tiempo que el suyo. La única forma en que podría hacerlo de manera confiable sería interconectarse directamente con el hardware y usar temporizadores y otros para hacer el trabajo.
Ciertamente, tratar de hacer algo donde la lectura rápida de un GPIO va a funcionar solo a bajas velocidades, simplemente porque su programa no se ejecuta todo el tiempo, es compartir el tiempo con todo lo que está haciendo el Pi.
Sería mejor utilizar un microcontrolador dedicado como una interfaz para el Pi que toma la onda cuadrada, calcula la frecuencia y luego la reporta sobre un protocolo serie, como las conexiones UART o SPI.