The more datapoints you have on a chart, the longer it will take to load the data - there isn't really a way around this. Every time you reload the chart's data, the chart must perform a series of calculations on the supplied data set.
The way around this that I would suggest, is exactly what you say in your second suggestion. You would have a delay on your initial load (which is unavoidable), but hiding and showing series should be instantaneous. What kind of redraw times are you seeing when hiding & showing your series?
One tip, to help with the delay of the initial load, could be to enable our background loading feature so your UI doesn't lock up:
@property (nonatomic, assign) BOOL loadDataInBackground
This should enable an activity indicator and give your user some feedback that something is actually happening.