Lately I came to other way of checking if pins have settled.
The only thing you need to do is to check if rigidbody of each pin is in sleeping mode, eg:
public bool PinHasSettled()
{
return pin_rigidbody.IsSleeping();
}
After that you only need to check settings when object will be marked as sleeping.
Associated documents:
https://docs.unity3d.com/Manual/RigidbodiesOverview.html
https://docs.unity3d.com/ScriptReference/Rigidbody.Sleep.html