Full disclaimer: I do not own a Mac, so I don't have any means of testing whether or not this solution will work. However, I'll give it my best go, and hopefully will have at least provided some useful resources for further digging.
From what I'm reading across several GitHub issues citing similar errors, it looks like this is likely an issue with your pip installer grabbing the wrong prebuilt package wheel for your computer and is installing binaries meant for a different machine.
Approach 1
For some macOS users, it looks like this was solved pretty easily by setting the environment variable SYSTEM_VERSION_COMPAT=1. However, if this doesn't fix the problem, there is a more in-depth approach.
Approach 2
1. Reinstall Python Using the Correct Installer
You mention that you tried reinstalling Python; my first recommendation is to ensure that you've installed the correct version for your processor. I also strongly suggest installing it directly from Python.org as opposed to any third-party package management systems. For an M1 Mac, you appear to need a macOS installation indicated for universal2: If you're using an Intel or Intel-only installer, that could potentially be the reason that the pip module is grabbing wheels with the wrong binaries.
2.1. Reinstall Pillow with Automatic wheel Selection
The provided traceback points to an issue with a Pillow shared object file. The most minimal example to replicate the error should be
from PIL import Image
There is an issue thread on the Pillow package's GitHub repo relating to this exact ImportError, the solution to which appeared to be to uninstall and reinstall the package, taking care to make sure you use the same pip module associated with your desired Python installation. You also typically want to make sure your pip module has the latest updates. From how you invoked Python in your example, this would probably be something like:
/usr/bin/python3 -m pip install --upgrade pip
/usr/bin/python3 -m pip uninstall Pillow
/usr/bin/python3 -m pip install Pillow
At this point, the installer should automatically choose, download, and install the correct wheel for your system. However, if you still have issues with it grabbing one with binaries for a different machine, you can override the installer's choice with your own.
2.2. Reinstall Pillow with Manual wheel Selection
To know which wheel to pick, first check your supported system tags:
/usr/bin/python3 -c "from packaging import tags; print('\n'.join([str(t) for t in tags.sys_tags()]))" | head -5
Which, for your system - depending on which OS version, Python version, and processor you have - might have some output like
cp38-cp38-macosx_11_0_universal2
cp38-cp38-macosx_11_0_arm64
cp38-cp38-macosx_11_0_x86_64
cp38-cp38-macosx_10_15_arm64
cp38-cp38-macosx_10_15_x86_64
You can the match this up with the list of Pillow's prebuilt wheels on PyPI, download one with a supported system tag, and install it from the local .whl file. For example, if one of your supported tags is cp310-cp310-macosx_11_0_arm64.whl, you might use the following:
/usr/bin/python3 -m pip install --upgrade pip
/usr/bin/python3 -m pip uninstall Pillow
/usr/bin/python3 -m pip install Pillow-9.1.1-cp310-cp310-macosx_11_0_arm64.whl
If needed, you can do the same thing with virtually any other package. Just take care to check if any packages you need which use your newly reinstalled package as a dependency have specific version requirements (e.g., how matplotlib requires pillow>=6.2.0).
I hope this helps!