Michael,
Yes, in this case, it would be better if you simply retrieve the public holidays for a reasonable range right at the beginning, on load, and use DiscreetCustomRanges to color these ranges appropriately.
You can continue to monitor time line changes and if the user happens to browse to a range outside the cached range for which you know the holidays, you then fire another call to the external source to retrieve more holiday info and update the DiscreetCustomRanges again.
Thanks
RadiantQ Support