Over three years since you asked, and with the BGE now dead, I will finally answer your question :-)
I understand what you mean by "tweening", but actually what is required is called lerping. Lerp means linear interpolation, and it is used to create a smooth transition between one value and another. One of its uses is making one object's rotation copy another object's rotation by some specified amount.
Here is the documentation on BGE's
It takes two parameters:
Other is the other thing to interpolate to, of like data type (in this case two object rotation matrices).
Factor is by how much - a float value in the range 0.0 to 1.0.
As for what to lerp, in this case it would be the
worldOrientation of two objects.
In this simple example, let's take two cubes - one controlled by mouse movement, and the other lerping to match it. (Cube2 starts off rotated so you can immediately see it rotate to adjust)
Here's my script
lerp.py containing my function
lerp_fn(), being called through a Python Module Controller as
scene = bge.logic.getCurrentScene()
target = scene.objects['Cube']
lerper = scene.objects['Cube2']
always = lerper.sensors["Always"] #Enable TRUE level triggering
#'target' object also must have a Sensor conected to this Module in order to be recognized
drag = 0.05 #How closely to copy the target rotation each tick (range 0~1)
lerper.worldOrientation = (lerper.worldOrientation.lerp(target.worldOrientation, drag))