Thanks for your ideas everyone. I came up with a neat solution myself and wanted to share it with you all. In order to manage that huge amount of layers I use an ExtJS Grid Panel which gets its entrys over a GetCapabilities Request from my GeoServer. In addition to this I use a custom plugin which embeds a pretty fast search (or better filter) functionality (tested with extjs 3). Here is my code:
{
xtype: 'grid',
title: "Verfügbare Karten",
ref: "capsGrid",
id: "capsGrid",
height: 150,
viewConfig: {forceFit: true},
selModel: new Ext.grid.RowSelectionModel({singleSelect:false}),
plugins : [new Ext.ux.grid.Search({
iconCls:'icon-zoom'
,readonlyIndexes:['country']
,disableIndexes:['pctChange']
,minChars:1
,autoFocus:true
,mode:'local' // to filter on local; for remote add mode:'remote'
,width: '20'
})],
bbar: [{
text: "Hinzufügen",
handler: function() {
Heron.layout.items[0].items[1].items[0].selModel.grid.getSelectionModel().each(function(record) {
var clone = record.clone();
clone.getLayer().mergeNewParams({
format: "image/png",
transparent: true
});
var map = Heron.App.getMapPanel();
map.layers.add(clone);
Heron.App.getMap().zoomToExtent(
OpenLayers.Bounds.fromArray(clone.get("llbbox"))
);
});
}
}],
store: new GeoExt.data.WMSCapabilitiesStore({
url: "http://localhost:8080/geoserver/wms?service=wms&version=1.1.1&request=GetCapabilities",
autoLoad: true
}),
columns: [
//{header: "Name", dataIndex: "name", sortable: true},
{header: "Titel", dataIndex: "title", sortable: true},
//{header: "Abstract", dataIndex: "abstract"}
],
},
In the end it looks like this:

Here are all the links you need:
The gridsearch plugin
Description how to use this plugin
OpenGeo Workshop that shows how to configure your Ext Grid