As far as I can tell, the pronunciation of have evolved irregularly.
In Old English, have did have a short vowel, but so did many other words that are now pronounced with "long a." So the difference in modern pronunciation cannot be explained by Old English vowel length.
The reason "have" is pronounced with a short rather than a long vowel seems to be that the word is often unstressed.
Old English vowel length: short "a" in both have and crave
Old English had a contrast in pronunciation between long and short vowels. They were generally not written differently by Old English scribes, but in modern transcriptions we usually mark the long vowels by writing a horizontal line above them, called a macron.
This contrast helps explain certain ambiguities of Modern English spelling, such as the difference in pronunciation between the verb live, from the Old English verb libban with a short vowel, and the adjective alive, from a preposition followed by an inflected form of the Old English noun līf "life" with a long vowel.
The Old English ancestor of have, the verb habban, did have a short vowel in all of its inflected forms. But the thing is, the Old English ancestors of shave, crave, stave, wave and knave also had short vowels (the Oxford English Dictionary gives the relevant Old English forms as sceafan, crafian, stafas, wafian and cnafa respectively). In fact, the modern English "long a" sound /eɪ/ does not regularly correspond with any Old English long vowel: old English ā generally became "long o" /oʊ/, and Old English ǣ and ēa generally became "long e" /iː/. (The evolution of the word gave seems a bit more confusing, so I've placed it at the bottom of this post.)
So it doesn't seem to me that Old English vowel length can explain the origin of the difference in modern English between the pronunciation of have (with /æv/) and all of the other words ending in -ave (with /eɪv/).
Middle English vowel length: open-syllable lengthening of some "a"
Many vowels that were short in Old English were lengthened at some time during Middle English due to open syllable lengthening. This is how "long a" generally developed in native English words: from open-syllable lengthening of Old English short a /ɑ/, æ /æ/, or ea /æɑ/ (as I said above, Old English long ā generally became /oʊ/ and ǣ and ēa generally became /iː/, outside of shortening environments). This is why we use the "long a" sound /eɪ/ in shave, crave, wave and knave.
This lengthening would not apply to a vowel before a doubled consonant, but it seems the Old English infinitive form habban ended up losing its double consonant due to analogical leveling, resulting in the Middle English form haven (the ancestor of modern English have). We would expect lengthening to apply to the "a" in Middle English haven since it is in a stressed, penultimate open syllable.
And in fact, we do see a long vowel in the word behave, which is etymologically derived from have. I was also able to find some historical spellings in the Oxford English Dictionary entry on have that suggest pronunciations with a long vowel, such as haive.
Otto Jespersen's 1907 analysis of John Hart's pronunciation of English (1569-1570) further supports the idea that "have" used to have a strong form with a long vowel. Jespersen says
Hart's advanced standpoint is shown also in his
definite recognition of what has been called in our times
the "phonetics of the sentence." He sometimes writes
long and sometimes short i in the words me, he, she, we,
he, the short vowel being evidently meant for those cases
in which the words were weakly stressed in the sentence.
While the same duality is still found in these words,
only one form survives in the word have, where Hart
makes a similar distinction; Hart's long-vowel form ha·v
is, however, still preserved in modern behave and in the
vulgar (h)aint, when that stands for have not. Cf. also
remark on there, etc., § 14. (p. 14)
A possible explanation for short "a" in current have: lack of stress
Since a pronunciation of have with the "long a" vowel evidently existed historically, and the word is of similar form to many other words that always are pronounced with a long vowel, it doesn't seem the current pronunciation with the "short a" vowel /æ/ can be explained by either the Old English vowel length, or any other phonemic property of the Old English word.
Rather, as Jespersen indicates, it seems likely its development was related to sentence-level stress: the word have is a commonly used "function word" that is often unstressed. This makes the vowel more prone to be short (it may either resist lengthening, or it may re-shorten after being lengthened). For example, in modern English the vowel of unstressed have is often reduced to schwa /ə/ or dropped altogether in some environments (as in the contractions I've, they've).
This explanation also seems to be consistent with the Oxford English Dictionary's entry on have, which says that
The development of the word within English shows various kinds of
reduction under low stress, especially in use in periphrastic
constructions and as auxiliary
By the way, I'm not saying these kind of irregular developments are restricted to function words, just that they're more common in these circumstances. Other commonly-used words may also develop irregularly. Piotr Gąsiorowski has written a good blog post about this sort of thing: "The Little Lambs Who Lost Their Way: Lexical Exceptions". I will quote a paragraph:
It is worth observing that high-frequency verbs often display irregular phonetic simplification, possibly because sloppy pronunciations are easier to tolerate in words more or less predictable from the context. Note the [...] unexpected short vowel of says and said, does and done, as well as been (pronounced like bin in American English). Been, said, does, done, says, and gone (in that order) are all among the 500 most frequently occurring English word-forms.
Comparision with other words with short vowels before "v"
Like the original poster, I have been unable to find any other word that is spelled with -ave but pronounced with /æv/. I looked for words that rhyme with have using "RhymeZone," and the only rhymes I could find that descend from Old English were calve, halve and salve, which are spelled differently and had a different historical development.
Some comments have mentioned other words spelled with different vowel letters before -ve, such as give and live. Interestingly, it seems that the identity of the vowel actually did historically make a difference as to whether it was lengthened or not—according to the Wikipedia article I linked to above, open syllable lengthening of originally short “i” only occurred occasionally, and when Old English short "i" did lengthen, it became what is in modern English "long e" (as in the words week and weevil) not modern English "long i." So modern English words spelled with -ive and pronounced with a long vowel (such as hive, alive, five, dive) are in general either from Old English words that already had long vowels, or from later borrowings from French into Middle English.
Words with two syllables, such as gavel and navel, also have another reason for having less predictable vowel length in general than monosyllables ending in "silent e": two-syllable words are often descended from Middle English words that had some forms with three syllables, which could be affected by the process of "trisyllabic laxing." This is summarized by the article "Middle English Quantity Changes – Further Squibs" by Attila Starčević.
the evolution of "gave" seems to be a bit complicated
I did find a post on Reddit saying that Modern English gave descends from an Old English form with a long vowel.
But actually, I don't think this is correct, since as far as I know there are no Old English long vowels that evolved to modern English "long a" /eɪ/. Old English long ā, when the length was preserved, regularly evolved to modern English /oʊ/ (as in stone /stoʊn/, from Old English stān) and Old English long ǣ or ēa, when the length was preserved, generally evolved to Modern English "long e" /iː/ (as in seed, from Old English sǣd).
Wiktionary at least says that the past tense forms of ġiefan, the Old English cognate to give, had a mix of long and short vowels: 1st- and 3rd-person singular ġeaf, 2nd-person singular ġēafe, and plural ġēafon. The past tense forms with the long vowel ēa do not seem to have survived to modern English, and if they had, the regular development as far as I can tell would be to /iː/, not /eɪ/.
The word gave seems to be descended instead from the form ġeaf with a short vowel ea or æ (whether the vowel in this word was pronounced as the short diphthong /æɑ/ or a short monophthong /æ/ doesn't seem to be totally clear, but the outcome would be the same either way because /æɑ/ and /æ/ merged in later stages of English). The "e" at the end was apparently added sometime in Middle English, something I found out while researching my answer to the following question: Why has “sware” become “swore”, “bare” “bore”, etc?
Best Answer
Great question! It seems that this word was originally pronounced with /kw/, as in "quiet," but the /w/ ended up being lost because the following vowel was unstressed.
As Andrew Leach says, in Modern French <qu> generally represents a single consonant /k/, due to a sound change from /kw/ to /k/ that occurred at some point. However, the word conquer was not taken from Modern French: it was taken from "Anglo-French," as you say, and in this dialect of French "qu" does seem to have generally been pronounced /kw/:
The words exchequer, chequer, lacquer, liquor are graphically similar, but they're different from conquer in the specifics of their etymology, so unfortunately a comparison with the pronunciations of these words is not conclusive. According to the Oxford English Dictionary (OED):
chequer and exchequer are ultimately derived from late Latin scaccārium, so the <qu> in these words just reflects the Parisian convention of writing /k/ as <qu>. I can find no evidence that it was ever pronounced as /kw/ in any variety of French or English. In older forms of French, it was apparently spelled with a <k>, and in English, spellings with <k> or <ck> are attested earlier than spellings with <qu>.
lacquer is derived from "obsolete French lacre (17th cent.)." The spelling with <qu> is again due to Parisian spelling conventions; in particular, the OED suggests the French word laque "lac" influenced the spelling.
So essentially, for all of the preceding words, Andrew Leach's answer seems to be the best explanation for why they are spelled with <qu>: it's just a French-influenced spelling of the sound /k/.
For conquer, on the other hand, the "Anglo-French" etymology does suggest the pronunciation should have a /kw/. And there does seem to be some evidence that it was pronounced with /kw/ at the time it entered English. The OED lists some Middle-English spelling variants that use the letter w, cuncweari and conqwere. It also seems like there weren't any spellings in Middle English with just <c> or <k>, which we might expect to see if the word was pronounced without an /w/ in this time period.
As Peter Shor mentions, there don't seem to be any words in present-day English that end in /-kwər/ (or, for that matter, /-wər/ preceded by any other consonant). Janus Bahs Jacquet made the point that this might be considered a phonotactical restriction; I thank him for pointing this out. A Google search turned up the following passage by Julia Schlüter from "Early Modern English: Phonology" (in Historical Linguistics of English: An International Handbook, edited by Alex Bergs and Laurel Brinton):
As this passage says, there are a number of exceptions to this sound change.
For example, Peter Shor pointed out that this kind of simplification does not seem to have taken place (or it was reversed) in the related word conquest. The primary stress in conquest, at least in modern pronunciations, is on the first syllable, but the /kw/ comes before a non-reduced vowel /ɛ/ rather than the schwa. Also, there is a similar word quest where the /kw/ does come at the start of a stressed syllable; this may have contributed by analogy to the maintenance or restoration of /kw/ in conquest.
Other words where post-consonantal /w/ before an unstressed syllable was retained, re-introduced, or just plain introduced in unstressed syllables include relinquish (ultimately from classical Latin relinquĕre, via French relinquiss-); extinguish, distinguish (ultimately from Latin words ending in -tinguĕre); anguish (from Old French anguisse, angoisse < Latin angustia < anguĕre, a variant of the verb angĕre); languish < Anglo-Norman and Middle French languiss- < ultimately from classical Latin languēre); vanquish (complicated; the OED says “< Old French vencus past participle and venquis past tense of veintre ( < Latin vincĕre), modern French vaincre to conquer, overcome; the ending was finally assimilated to that of verbs from French stems in -iss-”; to me it looks like the /w/ must also be due to analogy at some point since Latin, since it is not present in any form of Latin vincĕre).
The place names mentioned in the following question may be other examples of this sound change: "The mysterious, unenunciated "w" in the "-wich" of English place names"