An alternative would be to make it similar to the iOS photo gallery permissions:
When an app requests permission to all photos the user gets the option to share only a subset of photos with the app. (This subset can be different for each app.)
It's indeed terrible in Apps that reimplement the photo selecting feature, but in simpler Apps that just use the default picker it works quite well and it is transparent.
Popular apps like WhatsApp, Twitter, Facebook, Telegram, etc, could just fall back to the default picker when full access is not available.
When an app requests permission to all photos the user gets the option to share only a subset of photos with the app. (This subset can be different for each app.)