A true rainbow is an ineffective means of symbolizing elevation. A better solution is to pick three or four root colors, then choose four gradient colors to transition from root1 to root2, root2 to root3,.... and then draw the root colors as thicker lines at significant intervals (1000,2000,...) with the thinner ones in between (1200,1400,1600,...). If you study maps made by the USGS or the old DMA, you'll see examples of how to do this. The result will also be colorblind-friendly.
This, of course, is possible for polygons, but for render purposes, you're better off converting to lines, then Intersecting the lines with a coarse fishnet over the study area, then doing a dissolve on elevation and FID_fishnet (after which you can drop the FID_fishnet field). I just did this process last week, and improved full-scale render from 80 seconds to 3, and tile-scale render from 70 seconds to subsecond.