I discovered that I have several pinned plugins (all with timestamps from 4-5 years ago). After I removed all the *.pinned files Jenkins starts again.
This is strange since https://wiki.jenkins.io/display/JENKINS/Pinned+Plugins mentions that the pinned plugins feature was removed in Jenkins 2, so I wouldn't have expected that this suddenly causes problems.
The error doesn't look related to pinning.
My best guess is extraction of the war file failed, and trying again, perhaps with fewer files / more free disk space, worked.
(Note that this feature was in fact removed, my previous response might give the wrong impression – internal APIs remain but behave as nothing is ever pinned.)