4 digit 7 segment display using 2 shift registers

Hi all - I've actually got this "working" but not in a way I'd like. I want to be able to set a value to the display and forget. Not constantly keep updating it.

If this cannot be done, any recommendation on a display that actually works without the need to rapidly set each value?

I purchased this:

While it's listed as using "IC TM1637" which is controlled by this :
http://playground.arduino.cc/Main/TM1637

It's actually not what is sold and the item sent apparently uses 2 shift registers instead.

I've been playing around with this and have found that if I send the value first then the digit position, it works to set just that digit - but I can't set more than 1 digit at a time.

The code below outputs "0735", but it's set by rapidly flashing through the display.

If I start doing heavier processing - something basic like controlling another LCD display, then the last set digit will start getting disproportionately brighter, and past 5ms or processing, I'd start seeing the other digits flicker.

Has anyone come across this and figured out if there's a way to set more than one digit at a time here?

I know I can write the SAME digit multiple times
e.g.
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, digit[5]); //digit
shiftOut(dataPin, clockPin, MSBFIRST, 6); //location
digitalWrite(latchPin, HIGH);

sets digit "5" is the 2 center positions, but that's not very useful to me.

int latchPin = 7;
int clockPin = 6;
int dataPin = 8;

//digit is the array for numbers 192 for 0, 249 for 1,... 255 for nothing and 191 for -
word digit[] ={192, 249, 164, 176, 153, 146, 130, 248, 128, 144, 255, 191};

int dig1;
int dig2;

void setup() {
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, OUTPUT);
  Serial.begin(9600);
  delay(1000);
}

int b=0;
void loop() {  
  set(0,0);
  delay(10);
}


int set(int a, int b) { 
  digitalWrite(latchPin, LOW);
  shiftOut(dataPin, clockPin, MSBFIRST, digit[5]); //digit
  shiftOut(dataPin, clockPin, MSBFIRST, 1); //location
  digitalWrite(latchPin, HIGH);
  digitalWrite(latchPin, LOW);
  shiftOut(dataPin, clockPin, MSBFIRST, digit[3]); //digit
  shiftOut(dataPin, clockPin, MSBFIRST, 2); //location
  digitalWrite(latchPin, HIGH);
  digitalWrite(latchPin, LOW);
  shiftOut(dataPin, clockPin, MSBFIRST, digit[7]); //digit
  shiftOut(dataPin, clockPin, MSBFIRST, 4); //location
  digitalWrite(latchPin, HIGH);
  digitalWrite(latchPin, LOW);
  shiftOut(dataPin, clockPin, MSBFIRST, digit[0]); //digit
  shiftOut(dataPin, clockPin, MSBFIRST, 8); //location
  digitalWrite(latchPin, HIGH);
}