Lo único que tienes que hacer para evitar el parpadeo es llamar a los métodos SuspendLayout y ResumeLayout en el contenedor de esos controles, ejm:
 
Código:
 panel1.SuspendLayout()
for(int i=0;i<100;i++)
{
    Button b=new Button();
    b.Text = i.ToString();
    panel1.Controls.Add(b);
}
panel1.ResumeLayout();
  Nota: El código no está probado. 
Saludos