Well "appreciable difference" is a subjective specifier, but I get your point. The practice of inlining trivial member functions is almost as old as the C++ language. I don't know the code well enough to know where to pick out a few items that will show a marked difference or even if inlining all such member functions
will make a marked difference at all, especially when "appreciable difference" can mean 1% improvement or 20%. Frankly, and with all due respect, I'm not interested in "making the case" that a C++ best practice will make a difference in FreeOrion. Maybe a student or newbie to programming can play with that, but if I'm going to contribute to a project (which I happen to enjoy) I’d rather do something meaningful.
If you're interested in a more in-depth treatment on the subject, I recommend Scott Meyer's "Effective C++" (preferably his 3rd edition) Item 30: "Understand the ins and outs of inlining". Or, if you want to get a general idea, make two different builds on MSVC++ (2003 or later), one with link-time optimizations and another without. While the difference between these two will be more drastic than the difference between inlining and not inlining trivial functions (when using another compiler), it should at least demonstrate the principle.
In sympathy to your concerns, it's sometimes favorable to not inline a trivial function when it increases header file dependencies, thereby causing more object files to be rebuilt when a change is made. However, if the trivial member function returns a pointer or a reference, a forward declaration for the class is sufficient, e.g.,
Code:
class A;
class B {
A &a;
A &getA() {return a;}
};
// class A is re-delcared elsewhere.
However, if a trivial member function attempts to access a member of that class, the declaration is required, which can expand header file dependencies (and none of us like that). I say "can expand" because it doesn't have to; the inlined trivial member function can be defined in the other header file -- not ideal, but it is a work-around.
Overall, the decision as to rather to inline or not can be complicated and depend upon several factors. But, simple getters and setters are just no-brainers; they are pretty much guaranteed to both decrease code size, increase speed. And on the bright side, if something seems reasonable to inline and the compiler thinks otherwise, it just ignores us and outlines it anyway!

The exception to that being, of course, compiler-specific "force inline" modifiers, which I have rarely ever used.
There are a few other things that can aid a program somewhat under gcc, like the thoughtful use of "likely" and "unlikely" branch modifiers (or their "cold" and "hot" function modifier counterparts), etc., but if used poorly, they can end up harming performance rather than helping. MSVC++ doesn't implement these. Instead, they have a profiler which performs such optimizations automatically (after running an analysis).