struct制約の変更はライブラリの根底に関わるので無理です
上記のコードを参考に考えると、
class A where T : structとい条件下で、

1. List<A<ValueType>> <-- これは無理!
2. List<IA> <-- 共通インターフェース案
3. List<Object> <-- 投げやり案

2.は可能ですができればインターフェースは使いたくない。
3.はいくつかのAに固有な関数が呼べないと困る
と考えると2.が妥当ですかね・・・考え中です