Wow. This was a pretty interesting topic so I ran some tests and I was getting way different behavior than UncleJJ was. Then I saw that disclaimer that UncleJJ was running 3.13 and the readme for 3.17 claims:
So I decided to do a comparison of the SDK sources and it appears that the 3.17 patch completely destroys this mission.
Here is the relevant piece of CvPlayer::doEspionageMission() from Bhruic's 3.13 patch (I don't have the original 3.13 sources):
And here is how the official 3.17 patch handles things:
It looks like the purpose of the change was to have several small increases in the TC portion of the culture rather than having the entire increase applied to the TC at once. But there's a big problem with this implementation. In 3.13/Bhruic, the game used a single call to changeCulture() but in 3.17/Official it instead uses changeCultureTimes100(). However, the base amount of culture added is the same!
So while 3.13 adds 5% of the culture for you 3.17 actually only adds .05%
Here's an example of the 3.17 behavior from an ad-hoc in-game test. The game situation was that the Khmer had a city with 280 total culture, generating 3 culture per turn. Using WorldBuilder, I placed a city of my own three tiles due west of them and gave my city 150 culture so that the culture spread mission would be possible and placed a bunch of spies.
First spread culture mission:
Code:
int iCultureAmount = kMission.getCityInsertCultureAmountFactor() * pCity->countTotalCultureTimes100();
iCultureAmount /= 10000;
iCultureAmount = std::max(1, iCultureAmount);
countTotalCultureTimes100() returns 28000 as expected since there was 280 Khmer culture and nothing else there. Thus, iCultureAmount = 5 * 28000 / 10000 = 14. So far so good as this is the expected 5%.
Code:
int iNumTurnsApplied = (GC.getDefineINT("GREAT_WORKS_CULTURE_TURNS") * GC.getGameSpeedInfo(GC.getGameINLINE().getGameSpeedType()).getUnitGreatWorkPercent()) / 100;
Since the game was on epic speed and the global define wasn't changed, iNumTurnsApplied is 30.
Code:
for (int i = 0; i < iNumTurnsApplied; ++i)
{
pCity->changeCultureTimes100(getID(), iCultureAmount / iNumTurnsApplied, true, true);
}
Now with integer mathematics iCultureAmount/iNumTurnsApplied = 14/30 = 0. Thus we add absolutely nothing to both the City and Plot culture 30 times.
Code:
if (iNumTurnsApplied > 0)
{
pCity->changeCultureTimes100(getID(), iCultureAmount % iNumTurnsApplied, false, true);
}
Now, iCultureAmount % iNumTurnsApplied will be 14 and so we will add 14 of my civ's culture to the city only. But wait! The function is using changeCultureTimes100 so in actuality it is adding only .14 culture.

If you call countTotalCultureTimes100() and getCultureTimes100() on that city immediately after this and divide all returned values by 100, it tells you there is 280.14 culture, 280.00 of which is Khmer and .14 of which is mine. This was verified in the Python Console.
I ran the spread culture mission 3 more times over the next 3 turns and each time, the mission told me I'd spread 14 culture, but in actuality was spreading .14 culture. After 17 more successful missions I had a whopping 2.80 total culture in that city.
I expect this is why mirthadir (who is running 3.17) was seeing lower-than-expected culture increases on successive missions and why it looked like the game was using 5% of the Japanese culture instead of 5% of the total. It really was using the total, but the amount of added culture was so small as to be almost inconsequential. By the end of the test only 13.6 culture had actually been added after 2 dozen missions.
In summary, I fear spread culture is pretty close to useless under 3.17. It looks like they tried to adjust the "TC" amount and in the process completely broke it...