Faits :
A.
A.a. L'Aéroport International de Genève (ci-après: l'Aéroport) est un établissement de droit public cantonal autonome doté de la personnalité juridique.
A.b. A._ SA (ci-après: A._ ou la Société), dont le siège est à C._ (GE), est une société anonyme ayant pour but l'exploitation d'un bureau de conseil en environnement et sécurité.
A.c. B._ SA (ci-après: B._), dont le siège est à D._ (VS), est une société anonyme ayant notamment pour buts "l'exploitation d'un bureau de conseil en sécurité, sûreté, santé, environnement et gestion de crise dans les domaines aéroportuaires" et "l'exploitation d'unité ou de service de prévention du péril animalier pour les aéroports". Depuis environ vingt-cinq ans, B._ assure la protection contre le péril animalier au sein de l'Aéroport. Le dernier mandat en ce sens, d'une durée de cinq ans, lui a été attribué en 2013 à la suite d'un appel d'offres.
B.
B.a. Le 15 janvier 2019, l'Aéroport a publié sur le site www.simap.ch un appel d'offres en procédure ouverte relatif au marché de services "prévention du péril animalier et relevé botanique". Le 5 février 2019, à la suite d'un recours formé par A._, l'Aéroport a interrompu la procédure en vue de reformuler l'appel d'offres.
B.b. Par publication sur le site www.simap.ch, l'Aéroport a lancé, le 25 juillet 2019, un nouvel appel d'offres en procédure ouverte, soumis aux accords internationaux, portant sur le marché de services "prévention du péril animalier et suivi environnemental" (ci-après: l'appel d'offres). La période contractuelle s'étendait du 1er décembre 2019 au 1er décembre 2024, le contrat étant renouvelable deux fois, à chaque fois pour une durée de douze mois. Le dossier d'appel d'offres fixait quatre critères d'adjudication: le prix (pondéré à 30 %), la qualité technique de l'offre (pondéré à 40 %), les personnes-clés (pondéré à 10 %) et les références (pondéré à 20 %).
B.c. Le 5 août 2019, A._ a interjeté recours auprès de la Chambre administrative de la Cour de justice du canton de Genève (ci-après: la Cour de justice) à l'encontre de l'appel d'offres du 25 juillet 2019, en concluant, préalablement, à l'octroi de l'effet suspensif au recours et à ce que diverses mesures d'instruction soient prises et, sur le fond, à l'annulation de l'appel d'offres attaqué. Le 10 septembre 2019, la Cour de justice a octroyé l'effet suspensif au recours. Le 4 mars 2020, elle a tenu une audience.
Par arrêt du 4 août 2020, la Cour de justice a admis le recours et annulé l'appel d'offres du 25 juillet 2019. Cette autorité a retenu, en substance, que celui-ci violait les principes de la libre concurrence et de l'égalité de traitement entre soumissionnaires.
C.
Agissant par la voie du recours constitutionnel subsidiaire, l'Aéroport demande au Tribunal fédéral, sous suite de frais et dépens, d'annuler l'arrêt de la Cour de justice du 4 août 2020.
La Cour de justice renonce à transmettre des observations et persiste dans les considérants et le dispositif de son arrêt. A._ dépose des déterminations et conclut au rejet du recours. Le recourant a répliqué. A._ a dupliqué.
Considérant en droit :
1.
Le Tribunal fédéral examine d'office sa compétence (art. 29 al. 1 LTF) et contrôle librement la recevabilité des recours qui lui sont soumis (ATF 141 II 113 consid. 1).
1.1. La présente cause relève du droit public (art. 82 let. a LTF). Dans le domaine des marchés publics, un recours en matière de droit public n'est recevable, en vertu de l'art. 83 let. f LTF, qu'à la double condition que la valeur du mandat à attribuer soit supérieure ou égale aux seuils déterminants prévus à cet effet et que la décision attaquée soulève une question juridique de principe (ATF 141 II 113 consid. 1.2; 140 I 285 consid. 1.1). Il incombe à la partie recourante de démontrer la réalisation de ces deux conditions (cf. art. 42 al. 2 LTF; ATF 141 II 113 consid. 1.2), qui sont cumulatives, à moins que la question de principe s'impose avec évidence (arrêt 2D_25/2018 du 2 juillet 2019 consid. 1.1, non publié in ATF 145 II 249).
Dès lors que le recourant ne soutient ni n'explique que l'arrêt querellé soulèverait une question juridique de principe et qu'une telle question n'apparaît pas d'emblée clairement, c'est à bon droit qu'il a interjeté un recours constitutionnel subsidiaire (cf. arrêt 2D_42/2016 du 3 octobre 2017 consid. 1.1).
1.2. D'après l'art. 115 LTF, a qualité pour former un recours constitutionnel quiconque a pris part à la procédure devant l'autorité précédente ou a été privé de la possibilité de le faire (let. a) et a un intérêt juridique à l'annulation ou à la modification de la décision attaquée (let. b). Le recours constitutionnel ne peut être formé que pour violation des droits constitutionnels (art. 116 LTF).
1.3. La notion d'intérêt juridique (art. 115 let. b LTF) est étroitement liée aux motifs de recours prévus par l'art. 116 LTF, en ce sens que la partie recourante doit être titulaire d'un droit constitutionnel dont elle invoque une violation. De tels droits ne sont reconnus en principe qu'aux citoyens, à l'exclusion des collectivités publiques qui, en tant que détentrices de la puissance publique, ne sont pas titulaires des droits constitutionnels et ne peuvent donc pas attaquer, par la voie du recours constitutionnel subsidiaire, une décision qui les traite en tant qu'autorités. Cette règle s'applique aux cantons, aux communes et à leurs autorités ainsi qu'aux autres corporations de droit public qui agissent en tant que titulaires de la puissance publique (ATF 145 I 239 consid. 5.1; arrêts 2C_669/2017 du 15 juin 2018 consid. 2.1 et 2D_64/2012 du 17 juillet 2013 consid. 1.2).
La jurisprudence admet toutefois qu'il y a lieu de faire une exception pour les communes et autres corporations de droit public, lorsqu'elles n'interviennent pas en tant que détentrices de la puissance publique, mais qu'elles agissent sur le plan du droit privé ou qu'elles sont atteintes dans leur sphère privée de façon identique ou analogue à un particulier (ATF 142 II 259 consid. 4.2; 140 I 285 consid. 1.2).
Une seconde exception est admise en faveur des communes et des autres corporations publiques lorsque, par la voie du recours constitutionnel subsidiaire, elles se plaignent de la violation de garanties qui leur sont reconnues par les Constitutions cantonales ou fédérale, telles que leur autonomie (à l'image de l'art. 50 Cst. pour les communes), leur existence ou l'intégrité de leur territoire (cf. ATF 140 I 285 consid. 1.2; arrêt 2C_37/2013 du 17 janvier 2013 consid. 5.1). En effet, selon l'art. 189 al. 1 let. e Cst., le Tribunal fédéral connaît des contestations pour violation de l'autonomie des communes et des autres garanties accordées par les cantons aux corporations de droit public. La protection des droits constitutionnels reconnue aux communes pour défendre leur autonomie n'a toutefois été étendue qu'à certaines corporations de droit public, telles que l'Eglise évangélique du canton de Saint-Gall, dont l'organisation peut être comparée à celle d'une commune (ATF 108 Ia 82), et l'Université de Lausanne (arrêt 2C_421/2013 du 21 mars 2014 consid. 1.2.1, non publié in ATF 140 I 201). Elle a, en revanche, été refusée notamment aux Services industriels genevois (arrêt 2P.342/1994 du 4 juillet 1995 consid. 2d), à l'Hospice général du même canton (arrêt 2P.300/2004 du 14 décembre 2004 consid. 2.3), au canton de Vaud (CHUV [arrêt 2C_37/2013 du 17 janvier 2013 consid. 5.2]), à l'Etablissement cantonal d'assurance et de prévention du canton de Neuchâtel (arrêt 2C_669/2017 du 15 juin 2018 consid. 2.2.2) et au canton de Genève (ATF 145 I 239 consid. 5.3.1).
1.3.1. En l'occurrence, le recourant est un établissement cantonal autonome de droit public doté de la personnalité juridique (art. 1 al. 2 de la loi genevoise du 10 juin 1993 sur l'Aéroport international de Genève [LAIG/GE; RS/GE H 3 25]). Il a pour mission de "gérer et d'exploiter l'aéroport et ses installations en offrant, au meilleur coût, les conditions optimales de sécurité, d'efficacité et de confort pour ses utilisateurs" (art. 2 al. 1 LAIG/GE). Dans les domaines couverts par le droit des marchés publics, le recourant ne peut pas demander des offres et adjuger des travaux en toute liberté. Il est obligé d'appliquer les procédures légales relatives à ces marchés et de se soumettre à cet égard à un contrôle judiciaire. Sa position dans une procédure judiciaire en matière de marchés publics ne se confond donc pas avec celle d'un simple particulier; c'est au contraire en tant que détenteur de la puissance publique qu'il intervient (cf. ATF 140 I 285 consid. 1.2; arrêt 2D_64/2012 du 17 juillet 2013 consid. 1.2). Dans ces conditions, force est de constater que la première exception évoquée ci-dessus, à savoir le cas où la corporation de droit public agit comme un particulier, ne trouve pas application en l'espèce.
1.3.2. S'agissant de la seconde exception prévue par la jurisprudence, fondée sur l'éventuelle violation de garanties reconnues au recourant par les Constitutions cantonales ou fédérale, l'intéressé, qui est un établissement autonome de droit public, n'a pas indiqué quelle disposition de droit constitutionnel cantonal garantirait, selon lui, son autonomie (cf. recours, p. 8). Quoi qu'il en soit, l'activité de l'Aéroport - qui est intervenu en tant que détenteur de la puissance publique dans le cadre d'une procédure d'adjudication d'un marché public - est soumise à la surveillance du Conseil d'Etat de la République et canton de Genève (art. 8 al. 1 de la loi genevoise du 22 septembre 2017 sur l'organisation des institutions de droit public [LOIDP/GE; RS/GE A 2 24]). Compte tenu de la jurisprudence susmentionnée, le recourant n'est donc pas habilité à agir par la voie du recours constitutionnel subsidiaire, car il ne peut pas se prévaloir d'une autonomie ou d'autres garanties comparables à celles que le droit cantonal genevois reconnaît aux communes. Le simple fait qu'il jouisse d'une certaine indépendance, notamment dans sa gestion (cf. art. 30 ss LAIG/GE), n'y change rien (pour un cas analogue, cf. arrêt 2C_669/2017 du 15 juin 2018 consid. 2.2.2; voir aussi, avant l'entrée en vigueur de la LTF, arrêt 1P.555/1999 du 27 janvier 2000 consid. 1b).
1.4. On peut encore se demander si le recourant peut se plaindre par la voie du recours constitutionnel subsidiaire de la violation de ses droits de partie équivalant à un déni de justice formel.
1.4.1. Selon la jurisprudence, le recourant qui n'a pas qualité pour agir au fond peut en effet faire valoir la violation de ses droits de partie équivalant à un déni de justice formel (cf. ATF 129 I 217 consid. 1.4), pour autant qu'il ne s'agisse pas de moyens ne pouvant être séparés du fond (cf. ATF 133 I 185 consid. 6). Cependant, cette pratique ne s'applique par analogie aux corporations de droit public chargées de tâches publiques que si elles invoquent des griefs en étroite relation avec une violation de la garantie de leur autonomie ou de leur existence (cf. ATF 136 II 383 consid. 3.4; arrêt 2D_64/2012 du 17 juillet 2013 consid. 1.4; voir déjà ATF 121 I 218 consid. 4a).
1.4.2. En l'espèce, l'Aéroport ne fait valoir aucun grief en relation avec une violation de son autonomie ou de son existence (cf. supra consid. 1.3.2). Dans ces conditions, le recourant, qui n'a pas qualité pour recourir au fond, ne peut pas davantage se prévaloir de la violation de ses droits de partie.
1.5. Au vu de ce qui précède, le recours constitutionnel subsidiaire doit être déclaré irrecevable.
Succombant, le recourant, entreprise chargée d'accomplir une tâche de droit public dont l'intérêt patrimonial est en cause, doit supporter les frais judiciaires (art. 66 al. 1 et al. 4 LTF; cf. arrêt 2D_25/2018 du 2 juillet 2019 consid. 4, non publié in ATF 145 II 249; arrêt 2C_498/2017 du 5 octobre 2017 consid. 5.2) et verser une indemnité de dépens à l'intimée.
Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est irrecevable.
2.
Les frais judiciaires, arrêtés à 2'000 fr., sont mis à la charge du recourant.
3.
Le recourant versera à l'intimée une indemnité de 3'000 fr. à titre de dépens.
4.
Le présent arrêt est communiqué aux mandataires du recourant et de l'intimée, ainsi qu'à la Cour de justice de la République et canton de Genève, Chambre administrative.
Lausanne, le 25 février 2021
Au nom de la IIe Cour de droit public
du Tribunal fédéral suisse
Le Président : Seiler
Le Greffier : Ermotti