After merging sys-block/open-iscsi-2.1.4-r2, emerge reported this message in the merge summary (taken from /var/log/portage/elog/summary.log):
>>> Messages generated by process 20500 on 2022-10-21 10:50:20 MDT for package s
SCSI_ISCSI_ATTRS needs to be built as module (builtin doesn't work)
ISCSI_TCP needs to be built as module (builtin doesn't work)
I thought this seemed odd because I had never before encountered any Linux kernel modules that only worked correctly when built as loadable modules and did not work correctly when built-in. On the system where this was done, there are no loadable modules; loadable module support isn't even enabled so adding these two as loadable modules likely would not be trivial.
Skeptical of the warning's claim, I went ahead and built a new kernel with SCSI_ISCSI_ATTRS and ISCSI_TCP enabled, but built-in, since making them modules would not have been easy. Lo and behold, after booting the new kernel iSCSI connections work just fine even with those two modules built-in:
hitch ~ # zgrep ISCSI /proc/config.gz
# CONFIG_ISCSI_IBFT is not set
# CONFIG_ISCSI_BOOT_SYSFS is not set
# CONFIG_SCSI_CXGB3_ISCSI is not set
# CONFIG_SCSI_CXGB4_ISCSI is not set
# CONFIG_SCSI_BNX2_ISCSI is not set
# CONFIG_BE2ISCSI is not set
# CONFIG_SCSI_QLA_ISCSI is not set
hitch ~ # iscsiadm -m session
tcp:  192.168.99.68:3260,1 iqn.2022-10.net.danm.target0 (non-flash)
hitch ~ #
This shows that those two modules are built-in and that an iSCSI session was successfully started (target discovery and login which were required to establish the session, but which aren't shown here, of course also worked just fine). I have also successfully used the iSCSI attached disk to create an LVM PV, extend a local VG with it, and pvmove'd 2TiB of data to the iSCSI disk. No problems were encountered.
So it seems this warning is incorrect and that iSCSI will work correctly when those modules are built-in.