You could also try filling up the entire room with water, I don't know if Ghast can drown though and if that'll prevent spawning from a shard spawner (it might, I mean it also ignores light).
You could also try a floor/ceiling/walls of quicksand. I don't know if Ghast will fly out, but they might get stuck and not be able to get out if they fly into it.
Or you could have a ceiling that lowers every X seconds and suffocates all Ghast in the room (assuming it's only 5 blocks high). You might need to lower the ceiling 2 blocks, I've seen a video in the past where they had Ghast in minecarts and they found that the suffocation area (the Ghast's nose if you will) is not at the top of it's head but 1-2 blocks inside (I'm guessing it's just the center point of it's head you have to stick in a solid block).
You could try stuffing them into minecarts and send them through a 1x1 tunnel to suffocate them. Railcraft should have the tools to do this, though it'll be a lot more complicated than any of the other ones I came up with so far.
Or you could make a Skeleton spawner and use the arrows from that to infinitely fire a wall of Dispensers. This might cause lag though and Ghast might spawn faster than the arrows can kill them (and that's assuming a Skeleton spawner can produce enough arrows, you might need multiple though).
I didn't read the entire topic, so I'm sorry if I'm saying anything mentioned before or if I missed something.