Personally I prefer to do a:
COPY app/ /app/
when possible, and have all the folders organized how I want them in the build context. It's more maintainable for me and makes the Dockerfile easier to read.
With your two options, there's not a huge difference. As long as each layer is independent of each other, the image size won't show a noticeable increase to have multiple layers.
It is good to reduce the number of layers in general to avoid the limits. But you'd need to be doing a lot of other things to the image to hit that limit, or have a large number of COPY
commands, to hit those limits. Aufs with it's 42 layer limit is being phased out in favor of overlay2 which has up to 128 layers in it's limit. You could see a minor performance impact from lots of layers as the filesystem driver needs to search each layer for a read operation. So fewer is better, but more so when you get to the extremes.