i don't think it's possible just like you put it.
iSCSI is a block-level protocol. if several hosts access the same block device, they have to somehow arbitrate the use of the data stored there. Usually that means using a cluster-aware filesystem (GFS, OCFS2, CXFS, etc).
SMB/CIFS is a file-level protocol. it shares files with several clients, doing all the arbitration needed, and relying on the underlying filesystem.
Solution B should work, as long as you use a cluster-aware filesystem on this partition. oterwise, as soon as you use that block device from two hosts, you'll totally corrupt it.
It's not a 'rube goldberg'-like solution at all, since any fileserver works on top of a filesystem, you would just use a cluster-aware one. in fact, one of the most common use of cluster filesytems is as shared storage for several (smb/nfs) fileservers, distributing the processing and bandwidth load of file serving the same files.
in short: if you want block-level sharing, you have to use a cluster filesystem. if you also have non-cluster clients, you can add a fileserver on top of that filesystem.
The AFP stack for Linux, upon which FreeNAS is built, is not nearly as robust as Samba is. Because NetAtalk has a much smaller client base pounding on it than Samba does, the rate of code improvement is slower and the push to optimize the code is not nearly as intense. The problems you note are very likely due to code-maturity differences between Samba and Netatalk.
Best Answer
Most OSX instances I've run across can also access CIFS shares pretty simply, which would allow you to only create one, and avoid the permissions problems ErikA alluded to. The command-sequence would be command K, and
smb://servername-or-ip/share/
in the finder bar.