重いのはとりあえず表示部分のソース晒せや。

基本的にclsを使わずにboxfで塗りつぶす。
boxfの色はcolor命令で設定できるから、それで背景色と同じ色を指定。
それでもちらつくから、redraw命令を使用。
ちらつきの原因は、描画順にディスプレイに反映されるから。

背景色で塗りつぶす → 文字表示 → 背景色で塗りつぶす → 文字表示 → ・・・

背景色で塗りつぶしたときに、文字が一瞬消え、文字を描画したときに再び文字が現れる。
故にちらついて見える。
背景色で塗りつぶす前にredraw命令のパラメータ1に0を指定して実行すると、
実際は塗りつぶされてもディスプレイには反映されない。
そこでさらに文字を描画。
このままだと文字が描画されたのも反映されないので、文字を描画した後にredrawのパラメータ1に1を指定して実行。
すると画面に反映される。

要するに redraw 0,x1,y1,x2,y2 〜 redraw 1,x1,y1,x2,y2 で挟まれた部分における描画は瞬時にディスプレイに反映されない。
redraw 1,x1,y1,x2,y2 が実行された瞬間に反映される。
背景の上に文字を乗せてしまってからなら「背景色で塗りつぶされた瞬間」はディスプレイに反映されないのでちらつかない。

※redrawの範囲指定については割愛させていただいたのでマニュアルを参考にされたし。
  面倒ならウィンドウのクライアント領域全部を指定するよろし。