[Samsung Galaxy S9 & S9+ Cross Device Development] Drizzt321:
So, it worked!

Upgrade instructions from a previous LOS16 Unofficial:

1) Update TWRP to latest

2) Extract AP, BL, CP from the CSF2 Samsung ROM image

3) Extract from the BL .tar.md5 file cm.bin.lz4, keystorage.bin.lz4, param.bin.lz4, sboot.bin.lz4

4) Create a new tar file, call it bl.tar and store the 4 .lz4 files above

5) In Odin, for BL select the bl.tar created in #4, for CP select CP_*CSF2*.tar.md5 as the file, click Start

6) After this completes, boot to TWRP Recovery

7) Extract vendor.img.lz4 from the AP_*CSF2*.tar.md5 file, copy it to your phone currently in TWRP

8) Using an LZ4 decompression program, extract vendor.img.lz4 as vendor.img

9) Copy the vendor.img to the phone storage root

10) In TWRP click Install button, at the bottom click Install Image, select the vendor.img in the file list, and then select the Vendor from the prompt and flash

11) Copy the lineage-16.0-20190717-UNOFFICIAL-starlte.zip to the phone storage root

12) From the Install button, look through the files and select the lineage-16.0-20190717-UNOFFICIAL-starlte.zip

12a) If the installer errors and says vendor CSF2 is not installed, then more work needs to be done

12b) If you went through the instructions below to edit the update script and it fails again, stop here. Some other problem. Up to you if you want to troubleshoot this, probably look through the output and compare to where the updater-script gets to. You may have a different issue than I had, or so try that, or try updating the entire phone to the CSF2 Samsung ROM, then promptly installing TWRP again and installing from scratch.

13) If everything worked, reboot. Took a few extra minutes on boot at the LineageOS startup prompt before it finished starting up and got me to the unlock screen

Edit the update script to fix build timestamp issue:

The original LOS16 thread where I found this issue: https://xdaforums.com/showpost.php?p=79005665&postcount=59

1) In TWRP click the Mount button, select Vendor

2) Go back, select Terminal

3) Run the following command:

cd /vendor; grep -i csf2 build.prop

4) If a line pops up saying you have CSF2 installed, continue. If not, go back to step 1 above

grep utc build.prop

5) You'll get a property with an = and a long number. Write that number down.

6) On your computer, extract the META-INF\com\google\android\updater-script file from the lineage-16.0-20190717-UNOFFICIAL-starlte.zip

7) Using a text editor that understands Unix line endings (SublimeText, Notepad2, Notepad++, etc) open updater-script, look on line 6, it should look similar to this:

ifelse(file_getprop("/vendor/build.prop","ro.vendor.build.date.utc") != "1559624967",

8) This looks to see that the build date for your vendor image is 1559624967. If you DO have one of the CSF2 vendor images installed as we checked in step 3 of this, then we can safely update this value. Use the value you found in step 4. For me this was 1559625809, so for me the line now looks like:

ifelse(file_getprop("/vendor/build.prop","ro.vendor.build.date.utc") != "1559625809",

8) Save this file and exit

9) Update/overwrite the META-INF\com\google\android\updater-script file in the lineage-16.0-20190717-UNOFFICIAL-starlte.zip zip file

10) Take this modified zip file and go back up to step 11 in the Update instructions above