Serial number may be stored also in uC, it may working like white list and it's checking if s/n in flash in on white list, so other s/n may not work.
How about when you read AT45DB641E, do NOT change anything, write it to factory new chip - does it work (it should)?
How many bytes does it read? (we will see if it's 528byte page or 512bytes page configuration)
If it's not working, issue may be in different place. This device has also 128byte OTP security register where also s/n can be stored:
The device contains a specialized Security Register that can be used for purposes such as unique device serialization or
locked key storage. The register is comprised of a total of 128 bytes that is divided into two portions. The first 64 bytes
(byte locations 0 through 63) of the Security Register are allocated as a One-Time Programmable space. Once these
64 bytes have been programmed, they cannot be erased or reprogrammed. The remaining 64 bytes of the register (byte
locations 64 through 127) are factory programmed by Adesto and will contain a unique value for each device. The factory
programmed data is fixed and cannot be changed.
First 64 bytes of OTP you can programm using Custom Script Tool. You can also read it from original memory. Second 64 bytes are programmed in factory (unique ID) - it can not be changed. If main uC is using this data as a authentication then device will not work with different flash.