Thanks, T! The solution of using the ID's would certainly be one option. I've currently created my own wrappers for the various types I need to have a selection of and basically look them up once they need to be accessed so the problem is mostly solved.
But as far as the .NET API being very un-.NET, that once again became clear today when I wasted quite a few hours trying to change the color of a layer. I've been doing .NET/C# for so long that it's second nature so I naturally expect to change it like;
AcadLayer someLayer = AcadDoc.Layers.Add(layerName);
someLayer.Color = etc.
Which would be a common form of architecting .NET style. Of course there's no Color property, only the AcColor based color (no capital C) and changing the color requires a whole transaction with the DB to get the LayerTableRecord in order to change the actual .Color property there.
The API is certainly a .NET interface, but far from a .NET API as I'd consider it.