How can I copy a subset of columns from one InnoDB table to another, without locking?
IF you are not updating or deleting old rows, the way to do it with minimal locking is to do it chunk by chunk.  See here for doing chunking for deleting; it can be adapted for your 'copy'.  When you get to the end of the copying, stop writes long enough to copy the final chunk and rename:

Then, if your real goal was to change to BIGINT, finish with 

RENAME TABLE source TO old,
             destination TO source;
DROP TABLE old;