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