I have created a small app today which places several overlapping annotations on to the chart. Initially they were drawn in the order in which they were applied, so the last annotation applied was shown at the 'front'.
I then obtain the View from the annotation (which is to be the header annotation) and call it's own bringToFront() command using something like:
I have tried adding additional annotations after this, then calling the bring to front code again (not forgetting to call redrawChart), to simulate your app adding further views. This method seems to work and I think this would be a good starting point for you.
If you need any further help, please ask.