Add basic plugin channel caching
Switch channel registry to use maps rather than slices