Последовал совету
lol, использовал составной коллайдер из боксколлайдеров.
В итоге получилось перехитрить физический движок!
Если кому пригодится:
1) Добавляем rigidbody к объекту "weapon". Ставим галочку isKinematic.
2) Создаем пустой объект "collider1" и назначаем ему родителя - объект "weapon".
3) Добавляем объекту "collide1" любой нужный примитив-коллайдер. Настраиваем его.
4) Добавляем rigidbody к объекту "collide1". Ставим все галочки во вкладке Constraints (FreezeAll).
5) Добавляем FixedJoint к объекту "collide1". Назначаем "weapon" в качестве Connected Body.
6) Повторяем пункты 2-5, создавая n-объектов collide[n], пока не получим составной коллайдер достаточно близкий к форме mesh'а "weapon".
В результате можно спокойно двигать оружие, считывать Collision, ContactPoint и Normal из функции OnCollisionEnter, но оно свободно проходит сквозь такое же оружие, например, не смещаются коллайдеры при взаимодействии с любым rigidbody(само rigidbody получает удар-но это уже решается предстоящими скриптами
вашей собственной физики). Остается возможность считывать коллизии с Meshcollider'ами, т.к. коллайдер самого оружия собран из примитивов. Единственное что пришлось еще сделать-убрать галочку "use fixed update" в CharacterMotor - иначе при движении персонажа оружие вылетало из руки и потом ее догоняло