How to get options of all active widgets ?

This actually seems like a quite plausible approach – to me.

There is nothing wrong with looping through it, sometimes it is the only/fastest way anyway.

I don’t know how you get your sidebars, but for this

$sidebars_widgets = get_option( 'sidebars_widgets' );

can be used. Which gives you an associative array containing a list of widgets per sidebar and a list of all inactive widgets.