How do I use python to independently animate the shape keys on several instances of a mesh? I have created a mesh and it has a basis and relative shape key.

I can animate the Value of the relative shape key.

Unfortunately if I create a second instance of the mesh using alt-d or python's bpy.data.objects.new("second", bpy.data.meshes["space cow"]) the animation of the shape key affects both objects and they can not be separated.

It seems that obj.data.shape_keys is actually its own datablock from bpy.data.shape_keys and has its own animation_data separate from the object or the mesh.

Since I need to create and animate a herd of space cows using python I need code which can create independently animatable instances of this mesh.

My current instinct is that I'll have to duplicate the mesh data block and then duplicate the shape key.  It makes me sad that I have to create so many copies of a mesh.  I am hoping that someone else will know a better way.
The code I have developed since asking the question looks like this:

def cow_clone():
    orig = bpy.data.meshes['grazer']
    copy = orig.copy()
    # that conveniently copied our shape keys too
    return copy


and

def gobble(obj, frame5):

    data_path = "key_blocks[\"close mouth\"].value"

    shape_key = obj.data.shape_keys
    key_block = shape_key.key_blocks["close mouth"]

    key_block.value = 1
    shape_key.keyframe_insert(data_path, frame=frame5-35)
    shape_key.keyframe_insert(data_path, frame=frame5-10)
    key_block.value = 0
    shape_key.keyframe_insert(data_path, frame=frame5-30)
    shape_key.keyframe_insert(data_path, frame=frame5-20)


So copy()ing the mesh datablock conveniently copies the shape_keys (which is good, because shape_keys seems to be read-only).  Since I currently only have 10 of these meshes, it will not break the bank.  Although when I get around to doing the 320 flowers that will probably bloat the file a bit.  I am optimistic that it will not really stress blender at these numbers.

While this code works, I'm just dissatisfied with it; so I'm not going to accept this answer just in case someone smarter than me comes up with a better tactic, or maybe blender reworks its shape key system in a future release.

I suppose my primary complaint is that you can't make updates to a master mesh and have those updates affect all the derived instances.