You need to learn how to read the objects in the file.
/Annots 47 0 R
tells you that the annotations are stored in another indirect object, which will be
47 0 obj
so long as you are not using object streams.
Thank you for posting the file.
I have some comments.
1. You expect 2 annotation objects, in fact there are 3. This is because many annotation types actually add two objects - one the object itself, and the other its popup. Because of this your could tries to copy AP from the pop-up to the stamp. Not sure why this does not destroy the stamp appearance. coStamp should have been a CosNull.
2. Your code, if you had had the right objects, would have failed because AP is a direct object. Best to create AP yourself, and copy the N subkey. This is because N, being a stream, is guaranteed to be indirect, so storing its value into another dictionary will always succeed.