$LISTBUILD (IDs of referenced objects) should do the trick. The "parent" table here is only storing the corresponding IDs not the entire objects. You need to save each object individually and then link them.
While the object counterpart takes care of saving/inserting both objects in memory, the same is not true for SQL. You need to treat each object as individual rows on different tables.
Have you tried "jobbing" the routine from the CSP?
Certifications & Credly badges:
Warlin has no Certifications & Credly badges yet.
Global Masters badges:
Followers:
Warlin has no followers yet.
Following:
Warlin has not followed anybody yet.
The "only" way to do this via SQL would be using stored procedures. You can pass your object tree using either XML or JSON string and process them (using object logic) inside your SP. Standard SQL as intended won't support what you want to achieve.