VirtualWire or String causes arduino to hang

Isn't the above a 5 element array (0 1 2 3 4), or have I got it wrong?

No, it is not. The value in the brackets is the number of elements, not the upper index.

Any thoughts on what might actually cause the hangs?

What I like to do is fix the bugs as a become aware of them, and see what effect that has on the program. You have a known bug. Fix it, and let us know what impact that has on your problem.