If you're not fixed on a certain DBMS, you could have a look at PostgreSQL's inheritance capabilities.
Like (basically, RTFM!):
CREATE main_table (id serial, provider int, data text);
CREATE first_provider INHERITS main_table;
CREATE second_provider INHERITS main_table;
This will give you all entries from all inheriting tables when SELECTing from main_table.
Could reduce the needed changes to what you have right now...
I agree to the others' opinion regarding XML as anything but pure payload.
It's not too hard to "unroll" the real data if it's not too deeply nested.
Cheers,
Nick