I have created a simple script and tool. Let me know if this produces the results you are looking for. If not then we will get more complex in the processes.
Below is the source code and I will post a link for you to download the toolbox with the code when I get home tonight.
import arcpy
layerToAppendGeom = arcpy.GetParameterAsText(0)
layerWithNewGeom = arcpy.GetParameterAsText(1)
newGeomDict = {r[0]:[r[1]] for r in arcpy.da.SearchCursor(layerWithNewGeom, ["APN", "SHAPE@"])}
with arcpy.da.UpdateCursor(layerToAppendGeom, ["APN", "SHAPE@"]) as upCursor:
for updateRow in upCursor:
value1 = updateRow[0]
if value1 in newGeomDict:
updateRow[1] = newGeomDict[value1][0]
upCursor.updateRow(updateRow)
exit()