We suggest you storing the reference of A to B with a Guid in a metafield, as you actually suggested. Sitefinity does not handle data integrity checks automatically so you would have to take care of this. When you delete content item in module B, you could check with our APIs if this content is referenced by a an item from module A. This could be done by iterating through all items in A and look for such with a given GUID record in given metafield.
The Libraries module works in a similar principle - every library item has a ParentID (which is a GUID), which is the ID of the Library holding this item.
I hope you find this helpful.
the Telerik team
Check out Telerik Trainer
, the state of the art learning tool for Telerik products.