Bilinear R-parity violation and small neutrino masses: a self-consistent framework