Move the servos in little steps (single degrees or microseconds) and calculate how long between steps. Use micros() to schedule the steps.
// Move all servos, each at their own speed, until they
// have all reached their destinations.
bool StillMoving()
{
bool moving = false;
for (int i=0; i < ServoCount; i++)
{
if (servo[i].position != servo[i].targetPosition)
{
moving = true;
if (micros() - servo[i].lastStepTime >= servo[i].stepInterval)
{
servo[i].lastStepTime += servo[i].stepInterval;
servo[i].position += servo[i].step;
servo[i].servo.write(servo[i].position);
}
}
return moving;
}