Migrating files from local source are not found
Turns out the problem was not in the Drupal code but simply a path issue. I run the Drupal 8 site inside a DrupalVM server and the migration is done relative to THAT root. So '/absolute/path/to/private/filename.png' is not with respect to the root of my computer, but with respect to the root of the DrupalVM.

The problem is solved by adding an extra synced folder to the DrupalVM that points to the Drupal 7 root:

vagrant_synced_folders:
  - local_path: /path/to/drupal8/root
    destination: /var/www/drupalvm
    type: nfs
    create: true
  - local_path: /path/to/drupal7/root
    destination: /var/www/drupal7
    type: nfs
    create: true


Then restart the server:

vagrant halt
vagrant up


In the migration file the source path becomes:

constants:
    source_base_path: '/var/www/drupal7'


Now the files are found.