Is there a better strategy for beating Agatha at the lowest possible level in Pokémon Red/Blue?
Solution 1:
A similar strategy to your Lorelei strategy should work. However, because Agatha has both Pokemon immune to Horn Drill or Guillotine and Pokemon immune to Fissure, you need a Pokemon who has access to both. Fortunately Nidoking has both, available at level 16.
Use Double Team ASAP to reduce the chance of being hit by Hypnosis. Whenever you get hit by Confuse Ray or Night Shade, use a Full Restore (or Full Heal if just Confuse Ray). If you get put to sleep, immediately use the Poke Flute or a Full Restore if damaged in order to avoid Dream Eater. Continue until you are at max evasion. The only way Gengar can KO you in one turn is if you take both Night Shade and confusion damage without healing, which is why we heal as soon as either happens. After using Double Team six times, then use 6 X Speeds + X Accuracy to outspeed and OHKO her entire team.
Unlike Lorelei, being weak to one of Gengar's types does not guarantee it'll use it. So you should have at least 57 HP to survive the first Gengar's Night Shade. Agatha has a small chance to switch each turn which is RNG based and unavoidable. Switching to Haunter does not change the strategy as well as the second Gengar if you have at least 61 max HP (though if you KO a Pokemon beforehand, you may gain that experience from level up). Switching to Golbat, however, can be troublesome because of Haze to remove your boosts. It is for this reason that I do not recommend using Substitute since it is both not needed and the turn taken to use it increases the chance of her switching.
Of note, you could use the same Nidoran that you used for Lorelei in the same Elite Four Battle, provided that you let it evolve into Nidorino after Lorelei, bring a Moon Stone to evolve it into Nidoking, and bring the TM Fissure to teach it after becoming Nidoking.