Поскольку речь идет именно о структурах, второй вариант не имеет смысла, т.к. из словаря все равно будут возвращаться копии сохраненных в словаре структур: в C# структуры - это value type.
Ну и на будущее: если уж идти вторым путем, то надо активнее использовать инкапсуляцию. Т.е. инициализацию поля spravochnik и получение значения из него надо выполнять непосредственно в классе pogreb. Наружу класс должен выставить не публичное поле (публичные поля - почти всегда зло), а метод или свойство, которые будут проверять/инициализировать sparovochnik и искать в нем значение.