JPG photo filenames after an iPhone to "Photos app" import
For future iPhone -> computer imports

Using "Image Capture" app instead of "Photos" app solves most of the problems indeed (as explained here: How do I import photos in OS X without using Photos.app?).  Notes:


Set "Keep originals" to disabled in order to have HEIC files automatically converted to JPG during import (I'm not sure if my children's computers will be able to understand HEIC files easily in 70 years, but surely JPG will be supported!)
"Delete after import" is important.   
At the end of the import, I had "Error 9937" for a few MOV files. Then redo the export for these files with "Keep originals" enabled. 


For an export already done with random filenames

1) First run a script that groups variations of the same photo, such as:

DE017ACB-5ABD-4113-B110-95DABF7F28F7.jpeg
DE017ACB-5ABD-4113-B110-95DABF7F28F7_1_105_c.jpeg
DE017ACB-5ABD-4113-B110-95DABF7F28F7_4_5005_c.jpeg


This can be done easily with Python with:

import glob, os
H = dict()
for f in glob.glob('*.jpeg'):
    h = f[:36]  
    H.setdefault(h, []).append(f)


Then for each group, you can keep the file with the shortest filename (e.g. DE017ACB-5ABD-4113-B110-95DABF7F28F7.jpeg) and delete the others (with os.remove(...)).

2) Run a Python script that transforms a random filename DE017ACB-5ABD-4113-B110-95DABF7F28F7.jpeg to 20200502_120003.jpg based on the datetime stored in the EXIF metadadata

import glob, os, PIL.Image, datetime

for f in glob.glob('*.jpeg'):
    with PIL.Image.open(f) as img:
        exif_data = img._getexif()
    if exif_data == None:
        # do something here
        continue
    model, software, dt = exif_data.get(272, ''), exif_data.get(305, ''), exif_data.get(306, '')
    newfname = datetime.datetime.strptime(dt, '%Y:%m:%d %H:%M:%S').strftime('%Y%m%d_%H%M%S') + '.jpg' if dt != '' else f
    # rename the file with the new filename
    # and also move it in a specific folder according to model/software
    # special case to handle: filename collisions