Overriding properties at runtime but not for serialization
As far as the actual code goes, the implementation is clean and I don't really have any comments :)

As for the idea, I don't think it's quite right. Settings should be that - just settings. As soon as you start adding behaviour to them, they're not settings any more and you should look at what you're missing. Taking your example:

public interface IFilePathService
{
    string GetPath(string file);
}

public class LocalFilePathService : IFilePathService
{
    private readonly string resolvedDirectory;

    public LocalFilePathService(
        string baseDirectory, 
        string workingDirectory)
    {
        // validation ignored.
        resolvedDirectory = Path.Combine(baseDirectory, workingDirectory);
    }

    public string GetPath(string file)
    {
        // validation ignored.
        return Path.Combine(resolvedDirectory, file);
    }
}


Now you create your service with 2 parts, one is your setting (working directory) and the other is the path to your base directory:

new LocalFilePathService(@"C:\temp", Settings.WorkingDirectory);


You just inject this service into all the places you need to get files in the working directory. You don't have any magic that you need to worry about. If you change the setting and save it, then you expect (and want) it to be saved.