when I ran a few examples, the p-values for rho and for the t-test of the Pearson correlation of ranks always matched, save for the last few digits
Well you've been running the wrong examples then!
a = c(1,2,3,4,5,6,7,8,9)
b = c(1,2,3,4,5,6,7,8,90)
cor.test(a,b,method='pearson')
Pearson's product-moment correlation
data: a and b
t = 2.0528, df = 7, p-value = 0.0792
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
-0.08621009 0.90762506
sample estimates:
cor
0.6130088
cor.test(a,b,method='spearman')
Spearman's rank correlation rho
data: a and b
S = 0, p-value = 5.511e-06
alternative hypothesis: true rho is not equal to 0
sample estimates:
rho
1
Vectors a
and b
have a good, but far from perfect linear (Pearson) correlation. However, they have perfect rank correlation. See - to Spearman's $\rho$, in this case, it matters not if the last digit of b
is 8.1, 9, 90 or 9000 (try it!), it matters only if it's larger than 8. That's what a difference correlating ranks makes.
Conversely, while a
and b
have perfect rank correlation, their Pearson correlation coefficient is smaller than 1. This shows that the Pearson correlation is not reflecting ranks.
A Pearson correlation reflects a linear function, a rank correlation simply a monotonic function. In the case of normal data, the two will strongly resemble each other, and I suspect this is why your data does not show big differences between Spearman and Pearson.
For a practical example, consider the following; you want to see if taller people weigh more. Yes, it's a silly question ... but just assume this is what you care about. Now, mass does not scale linearly with weight, as tall people are also wider than small people; so weight is not a linear function of height. Somebody who is 10% taller than you is (on average) more than 10% heavier. This is why the body/mass index uses the cube in the denominator.
Consequently, you would assume a linear correlation to inaccurately reflect the height/weight relationship. In contrast, rank correlation is insensitive to the annoying laws of physics and biology in this case; it doesn't reflect if people grow heavier linearly as they gain in height, it simply reflects if taller people (higher in rank on one scale) are heavier (higher in rank on the other scale).
A more typical example might be that of Likert-like questionnaire rankings, such as people rating something as "perfect/good/decent/mediocre/bad/awful". "perfect" is as far from "decent" as "decent" is from "bad" on the scale, but can we really say that the distance between the two is the same? A linear correlation is not necessarily appropriate. Rank correlation is more natural.
To more directly address your question: no, p values for Pearson and Spearman correlations mustn't be calculated differently. Much is different about the two, conceptually as well as numerically, but if the test statistic is equivalent, the p value will be equivalent.
On the question of an assumption of normality in Pearson correlation, see this.
More generally, other people have elaborated much better than I could regarding the topic of parametric vs. non-parametric correlations (also see here), and what this means regarding distributional assumptions.