cpio is a standard Linux archiver that also includes a pass-though mode that makes a convenient way to copy things.
It takes a list of file on standard input, usually this is usually scripted as the output of the
find command, but since you already have a list of files, lets use that.
assuming the filenames in the list are relative
cd A; cpio --format=newc -pduv B < filelist.txt
cpio, given a list of file names on stdin, to pass-through, make directories, unconditionally write over anything already there and print a verification line, targeting directory B. Using the
newc format allows more than 65536 inodes, just in case you are dealing with that many