Putting the lambda layer in a subfolder 'python' solved this issue:
/---lambda-functions/
/---shared-layer/
/---python/
boto3/
my_shared_functions.py
...etc
I was running on the assumption that the folder structure for CDK was somehow different to uploading a layer manually.