The join command wont work as it is activated automatically.
I quite don't understand your remark here. The join command works fine in MP, as far as I know. It is possible to make something like you requested.
But I wouldn't use a distance boolean. I would use the knowsAbout command.
I suppose the script would look something like this:
;; I assume all units are players
;; Example: [[P1,P2,P3,P4,P5]] exec "thisscript.sqs"
;; Contains all the player units
_units = _this select 0
? not local player : exit
_units = _units - [player]
#loop
@({player knowsAbout _x >= 0.105} count _units > 0 Or {alive _x} count _units == 0 Or not alive player)
? not alive player : exit
_i = 0
_amount_units = count _units
while (_i < _amount_units) do {if (player knowsAbout (_units select _i) >= 0.105) then {[player] join (group (_units select _i)); _units = _units - [(_units select _i)]; _amount_units = _amount_units - 1}}
? (_amount_units > 0) : goto "loop"
exit
I don't know if it is bug free (can't test it on a machine that can't run OFP). But the code looks pretty solid to me.
Edit: found a small flaw in the script, fixed it.