Am I going about catching a Castform wrong?
Based on the information in this guide, it doesn't look like having a Goomy show up will block your chances of getting a Castform, so that rules out point 1:
Switch to your stall/oneshot Pokémon, and wait for the wild mon to call for help. Keep knocking out whatever it calls that's not the desired rare spawn.
As to point 2, from here
The even better thing about S.O.S. Battles is that they don't necessarily call the same Pokémon. In the encounter listings, there are up to 8 different rows of Pokémon and when a Pokémon calls for help, it will select a random encounter row and give you a Pokémon of the same slot in that row as the Pokémon you are facing.
As all Weather-SOS Pokemon are in the same row for Route 17, this also supports that having a Goomy show up will not prevent a Castform from showing up.
The only way to break the chain and negate the ability to call for help is if the original wild spawn, or any other Pokémon in its evolutionary family, are eliminated from the chain. Using your Fearow as an example, he calls for help and Goomy appears, you proceed to kill Fearow instead, the chain ends and no more help can be called. As long as any Pokémon from the original wild spawn's evolutionary chain remains, the chain is live.
This leaves you with only point 3 remaining, and I believe this is what's happening. I'm fairly confident that you are just experiencing bad RNG. From experience, Castform (and Goomy) have pretty low spawn rates to begin with, so that probably doesn't help your situation, either.
(As a side note, the 255th chain is the farthest you can go. You can have chain 256, but it will start over and be considered chain 1. Therefore, the rules regarding shinies, HAs and IVs and their likelihood of appearance also restart.)