I initially took the approach of modifing the source code to remove the double definition, but this created more problems.
Then, I afraid, without knowing the other problems, the only thing I can state that you need to address the other problems as well. It is really as stated, "DOSBase" is a "DosLibrary *", but this implies that you have to cast, for example, the return code of OpenLibrary() or the parameter of CloseLibrary() to convert it from or back to the proper type, just to mention two other sources of potential compiler warnings.
Then I modified the "proto/dos.h" code by commenting out line 4 and that allowed me to compile successfully.
Outch. Don't do that. proto/dos.h is a system header, and editing it means that you break every other program that includes it.
If you *do not* want the system header to define "DOSBase", you need another set of headers. For that, you need to replace
#include <proto/dos.h>
by the following pair of includes:
#include <clib/dos_protos.h>
#include <clib/dos_pragmas.h>
if my memory serves me correctly. If you check "proto/dos.h", you will find that it will only include the above two files, and in addition declares DOSBase.
Note that in such a case, your code should in general declare DOSBase itself. How exactly does then not matter.