Hi!
It is simple to get a storage type of the parameter. Just use document.get_TypeOfStorage(BuiltInParameter...
Getting built-in parameter unit type is a bit more complicated. If you know the category parameter belongs to, you can create a view schedule in temporary transaction. You can find your parameter in schedule.Definition.GetSchedulableFields list:
var schedulableField = schedule
.Definition
.GetSchedulableFields()
.Where(x => x.FieldType == ScheduleFieldType.Instance || x.FieldType == ScheduleFieldType.ElementType)
.First(x => x.ParameterId == new ElementId(BuiltInParameter....));
Then add this schedulable field to the schedule, and get a schedule filed unit type:
schedule.Definition.AddField(schedulableField);
var unitType = schedule.Definition.GetField(0).UnitType;
This method works both for shared and built-in parameter.