呼び出し毎のメソッド検索が低速(たぶん)

毎回すべてのメソッドを検索するのは遅いでしょう。事前にメッセージIDをキーにしたハッシュテーブルなどにメソッドを保持しておくのがよいでしょうね。
メッセージとメソッドの関係はクラスが定義された時点で決定されるので、C++ならテンプレートを使ってコンパイル時にテーブルを生成させてやりたいところですが、C#ではそういうわけにはいかないようです。
まず、このテーブルはクラス毎に1つだけ存在していればよいので、個々のクラスに static な hashtable を持たせる感じになります。当然ですが、これはクラスに対する Attribute として実装するのが適切でしょう。