Okay - I have finally gotten to the bottom of this. It turns out that the system was not able to read the ro.build.fingerprint property at startup because it was longer than 91 characters.
This can be observed in the system log:
E/Build ( 720): Failed to set fingerprint property
E/Build ( 720): java.lang.IllegalArgumentException: val.length > 91
E/Build ( 720): at android.os.SystemProperties.set(SystemProperties.java:127)
E/Build ( 720): at android.os.Build.ensureFingerprintProperty(Build.java:639)
E/Build ( 720): at com.android.server.SystemServer.run(SystemServer.java:230)
E/Build ( 720): at com.android.server.SystemServer.main(SystemServer.java:178)
E/Build ( 720): at java.lang.reflect.Method.invoke(Native Method)
E/Build ( 720): at java.lang.reflect.Method.invoke(Method.java:372)
E/Build ( 720): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:902)
E/Build ( 720): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:697)
I manually edited the /system/build.prop on the device to shorten it and the error is gone. No /vendor/build.prop is necessary as the code doesn’t compare it if it doesn’t exist.