Маршаллер P / Invoke не будет жаловаться, когда uint становится слишком большим, вы просто получите отрицательный int. Дополнительный слой позволяет использовать ключевое слово checked для создания исключения OverflowException. Что довольно желательно.
Стоит ли это хлопот - вопрос второстепенный. Многие API, такие как Win32, используют unsigned в качестве логического ограничения. Как длина строки или размер блока памяти, она никогда не может быть отрицательной. На практике такое число никогда не может переполниться. Потому что невозможно выделить столько памяти. Я не помню, чтобы когда-то работал в API, где это был slam-dunk, который нужно использовать. Поэтому я думаю, что вы в порядке, просто используя прямое объявление pinvoke с целыми числами.