I didn't like how the the 1 corner checking was working out, so I added back checking of all 4 corners. To make sure the screen doesn't roll/jitter, I added a "time remaining" check before processing collisions for the 2nd fireball.
I also did something that I hope addresses the problem where a fireball would get past your shield then bounce around inside the castle wall and take out a large number of bricks. I changed it so that after the fireball's new direction is calculated, it's checked to see if it's towards the king of the castle. If it is, the direction is changed to be away from the king. Seems to help.