I've got around 10,000 LineItems on a graph with LineItem.Symbol.IsVisible = false, yet 2/3 of the rendering time is spent in Symbol.Draw.
A simple fix is to check the _isVisible flag in Draw() and immediately return if it is false, i.e:
public void Draw( Graphics g, GraphPane pane, LineItem curve, float scaleFactor,
bool isSelected )
{
if (!_isVisible) { return; }