He revisado el código y está haciendo exactamente lo que debe:
1) El ajuste de "ocultar conexión" al hacer login es a nivel de sesión. Es decir, si inicias sesión en 10 navegadores distintos, tienes 10 sesiones abiertas, cada una con un ajuste independiente de las demás.
2) La sesión que ha tenido la última actividad es la que "manda" a la hora de mostrar o no la información de conexión en el perfil. No la última que ha iniciado sesión, sino la última que ha cargado una página. Por ejemplo, si tienes una sesión con "ocultar" y otra con "mostrar" pero tu última visita ha sido desde la de "mostrar", se va a mostrar.
3) Hacer login desde la cabecera es lo mismo que no marcar "ocultar conexión" al hacer login desde el formulario.
4) La casilla de "ocultar conexión" al iniciar sesión sobreescribe lo que esté configurado en el panel de control.
Mi conclusión: la casilla del panel de control sólo sirve para ocultar la hora de última conexión y debería llamarse "Ocultar la fecha de última visita en mi perfil" en vez de "Ocultar mi estado de conexión".
¿Coincide esto con lo que has visto?