A solution I've used in one case that absolutely called for the abominable fields was by using flow.
You can establish a Parent/Child Multi-select picklist to multi-select picklist relationships using flow screen elements and decision elements.
First Screen 1 has MulSelectPicklist_Main field.
Which is followed by a Decision Element:
IF MulSelectPicklist_Main contains MulselectPicklist_% Show Screen # with MulSelectPicklist_% else route to next decision element.
Chain Decisions until end of flow.
%=dependent multi select pick-lists
# =subsequent flow screen elements which display specific multi select pick-lists.
You can add this flow as a subflow in a structured process or add as launch the flow via a button on the page layout.